* gdb.texinfo (Continuing and Stepping): When talking about "step"
[deliverable/binutils-gdb.git] / gdb / dbxread.c
index 0ea268720bb2aa5fbd58c6bc0dd1a496e7ad956e..b2bcb32ea621cabce9dad0e421b995ea1dddf375 100644 (file)
@@ -108,25 +108,6 @@ struct symloc {
 #define IGNORE_SYMBOL(type)  (type == (int)N_NSYMS)
 #endif
 
-/* Macro for name of symbol to indicate a file compiled with gcc. */
-#ifndef GCC_COMPILED_FLAG_SYMBOL
-#define GCC_COMPILED_FLAG_SYMBOL "gcc_compiled."
-#endif
-
-/* Macro for name of symbol to indicate a file compiled with gcc2. */
-#ifndef GCC2_COMPILED_FLAG_SYMBOL
-#define GCC2_COMPILED_FLAG_SYMBOL "gcc2_compiled."
-#endif
-
-/* Define this as 1 if a pcc declaration of a char or short argument
-   gives the correct address.  Otherwise assume pcc gives the
-   address of the corresponding int, which is not the same on a
-   big-endian machine.  */
-
-#ifndef BELIEVE_PCC_PROMOTION
-#define BELIEVE_PCC_PROMOTION 0
-#endif
-
 /* Remember what we deduced to be the source language of this psymtab. */
 
 static enum language psymtab_language = language_unknown;
@@ -170,7 +151,7 @@ struct complaint unknown_symtype_complaint =
   {"unknown symbol type %s", 0, 0};
 
 struct complaint unknown_symchar_complaint =
-  {"unknown symbol type character `%c'", 0, 0};
+  {"unknown symbol descriptor `%c'", 0, 0};
 
 struct complaint lbrac_rbrac_complaint =
   {"block start larger than block end", 0, 0};
@@ -212,9 +193,6 @@ free_header_files PARAMS ((void));
 static void
 init_header_files PARAMS ((void));
 
-static struct pending *
-copy_pending PARAMS ((struct pending *, int, struct pending *));
-
 static void
 read_ofile_symtab PARAMS ((struct partial_symtab *));
 
@@ -407,8 +385,8 @@ explicit_lookup_type (real_filenum, index)
       f->length *= 2;
       f->vector = (struct type **)
        xrealloc (f->vector, f->length * sizeof (struct type *));
-      bzero (&f->vector[f->length / 2],
-            f->length * sizeof (struct type *) / 2);
+      memset (&f->vector[f->length / 2],
+            '\0', f->length * sizeof (struct type *) / 2);
     }
   return &f->vector[index];
 }
@@ -439,24 +417,6 @@ record_minimal_symbol (name, address, type, objfile)
       break;
 #endif
     case N_TEXT:
-      /* Don't put gcc_compiled, __gnu_compiled_cplus, and friends into
-        the minimal symbols, because if there is also another symbol
-        at the same address (e.g. the first function of the file),
-        lookup_minimal_symbol_by_pc would have no way of getting the
-        right one.  */
-      if (name[0] == 'g'
-         && (strcmp (name, GCC_COMPILED_FLAG_SYMBOL) == 0
-             || strcmp (name, GCC2_COMPILED_FLAG_SYMBOL) == 0))
-       return;
-
-      {
-       char *tempstring = name;
-       if (tempstring[0] == bfd_get_symbol_leading_char (objfile->obfd))
-         ++tempstring;
-       if (STREQN (tempstring, "__gnu_compiled", 14))
-         return;
-      }
-
     case N_NBTEXT:
     case N_FN:
     case N_FN_SEQ:
@@ -493,7 +453,8 @@ record_minimal_symbol (name, address, type, objfile)
   prim_record_minimal_symbol
     (obsavestring (name, strlen (name), &objfile -> symbol_obstack),
      address,
-     ms_type);
+     ms_type,
+     objfile);
 }
 \f
 /* Scan and build partial symbols for a symbol file.
@@ -594,7 +555,7 @@ dbx_symfile_init (objfile)
   unsigned char size_temp[DBX_STRINGTAB_SIZE_SIZE];
 
   /* Allocate struct to keep track of the symfile */
-  objfile->sym_private = (PTR)
+  objfile->sym_stab_info = (PTR)
     xmmalloc (objfile -> md, sizeof (struct dbx_symfile_info));
 
   /* FIXME POKING INSIDE BFD DATA STRUCTURES */
@@ -696,9 +657,9 @@ static void
 dbx_symfile_finish (objfile)
      struct objfile *objfile;
 {
-  if (objfile->sym_private != NULL)
+  if (objfile->sym_stab_info != NULL)
     {
-      mfree (objfile -> md, objfile->sym_private);
+      mfree (objfile -> md, objfile->sym_stab_info);
     }
   free_header_files ();
 }
@@ -1074,6 +1035,7 @@ end_psymtab (pst, include_list, num_includes, capping_symbol_offset,
       LDSYMLEN(pst) = capping_symbol_offset - LDSYMOFF(pst);
   pst->texthigh = capping_text;
 
+#ifdef N_SO_ADDRESS_MAYBE_MISSING
   /* Under Solaris, the N_SO symbols always have a value of 0,
      instead of the usual address of the .o file.  Therefore,
      we have to do some tricks to fill in texthigh and textlow.
@@ -1114,7 +1076,7 @@ end_psymtab (pst, include_list, num_includes, capping_symbol_offset,
 
     if (minsym) {
       pst->texthigh = SYMBOL_VALUE_ADDRESS (minsym) +
-       (int) MSYMBOL_INFO (minsym);
+       (long) MSYMBOL_INFO (minsym);
     } else {
       /* This file ends with a static function, and it's
         difficult to imagine how hard it would be to track down
@@ -1140,6 +1102,9 @@ end_psymtab (pst, include_list, num_includes, capping_symbol_offset,
 
   /* this test will be true if the last .o file is only data */
   if (pst->textlow == 0)
+    /* This loses if the text section really starts at address zero
+       (generally true when we are debugging a .o file, for example).
+       That is why this whole thing is inside N_SO_ADDRESS_MIGHT_LIE.  */
     pst->textlow = pst->texthigh;
 
   /* If we know our own starting text address, then walk through all other
@@ -1159,7 +1124,7 @@ end_psymtab (pst, include_list, num_includes, capping_symbol_offset,
   }
 
   /* End of kludge for patching Solaris textlow and texthigh.  */
-
+#endif /* NO_SO_ADDRESS_MAYBE_MISSING.  */
 
   pst->n_global_syms =
     objfile->global_psymbols.next - (objfile->global_psymbols.list + pst->globals_offset);
@@ -1257,7 +1222,7 @@ dbx_psymtab_to_symtab_1 (pst)
 
   if (pst->readin)
     {
-      fprintf (stderr, "Psymtab for %s already read in.  Shouldn't happen.\n",
+      fprintf_unfiltered (gdb_stderr, "Psymtab for %s already read in.  Shouldn't happen.\n",
               pst->filename);
       return;
     }
@@ -1269,13 +1234,13 @@ dbx_psymtab_to_symtab_1 (pst)
        /* Inform about additional files that need to be read in.  */
        if (info_verbose)
          {
-           fputs_filtered (" ", stdout);
+           fputs_filtered (" ", gdb_stdout);
            wrap_here ("");
-           fputs_filtered ("and ", stdout);
+           fputs_filtered ("and ", gdb_stdout);
            wrap_here ("");
            printf_filtered ("%s...", pst->dependencies[i]->filename);
            wrap_here ("");             /* Flush output */
-           fflush (stdout);
+           gdb_flush (gdb_stdout);
          }
        dbx_psymtab_to_symtab_1 (pst->dependencies[i]);
       }
@@ -1314,7 +1279,7 @@ dbx_psymtab_to_symtab (pst)
 
   if (pst->readin)
     {
-      fprintf (stderr, "Psymtab for %s already read in.  Shouldn't happen.\n",
+      fprintf_unfiltered (gdb_stderr, "Psymtab for %s already read in.  Shouldn't happen.\n",
               pst->filename);
       return;
     }
@@ -1326,7 +1291,7 @@ dbx_psymtab_to_symtab (pst)
       if (info_verbose)
        {
          printf_filtered ("Reading in symbols for %s...", pst->filename);
-         fflush (stdout);
+         gdb_flush (gdb_stdout);
        }
 
       sym_bfd = pst->objfile->obfd;
@@ -1356,7 +1321,6 @@ read_ofile_symtab (pst)
   unsigned char type;
   unsigned max_symnum;
   register bfd *abfd;
-  struct symtab *rtn;
   struct objfile *objfile;
   int sym_offset;              /* Offset to start of symbols to read */
   int sym_size;                        /* Size of symbols to read */
@@ -1548,7 +1512,7 @@ process_one_symbol (type, desc, valu, name, section_offsets, objfile)
 
   /* If this is nonzero, we've seen a non-gcc N_OPT symbol for this source
      file.  Used to detect the SunPRO solaris compiler.  */
-  int n_opt_found;
+  static int n_opt_found;
 
   /* The stab type used for the definition of the last function.
      N_STSYM or N_GSYM for SunOS4 acc; N_FUN for other compilers.  */
@@ -1558,7 +1522,8 @@ process_one_symbol (type, desc, valu, name, section_offsets, objfile)
      since it would be silly to do things differently from Solaris), and
      false for SunOS4 and other a.out file formats.  */
   block_address_function_relative =
-    0 == strncmp (bfd_get_target (objfile->obfd), "elf", 3);
+    (0 == strncmp (bfd_get_target (objfile->obfd), "elf", 3))
+     || (0 == strncmp (bfd_get_target (objfile->obfd), "som", 3));
 
   if (!block_address_function_relative)
     /* N_LBRAC, N_RBRAC and N_SLINE entries are not relative to the
@@ -1647,33 +1612,38 @@ process_one_symbol (type, desc, valu, name, section_offsets, objfile)
       if (!VARIABLES_INSIDE_BLOCK(desc, processing_gcc_compilation))
        local_symbols = new->locals;
 
-      /* If this is not the outermost LBRAC...RBRAC pair in the
-        function, its local symbols preceded it, and are the ones
-        just recovered from the context stack.  Defined the block for them.
-
-        If this is the outermost LBRAC...RBRAC pair, there is no
-        need to do anything; leave the symbols that preceded it
-        to be attached to the function's own block.  However, if
-        it is so, we need to indicate that we just moved outside
-        of the function.  */
-      if (local_symbols
-         && (context_stack_depth
-             > !VARIABLES_INSIDE_BLOCK(desc, processing_gcc_compilation)))
+      if (context_stack_depth
+         > !VARIABLES_INSIDE_BLOCK(desc, processing_gcc_compilation))
        {
-         /* FIXME Muzzle a compiler bug that makes end < start.  */
-         if (new->start_addr > valu)
+         /* This is not the outermost LBRAC...RBRAC pair in the function,
+            its local symbols preceded it, and are the ones just recovered
+            from the context stack.  Define the block for them (but don't
+            bother if the block contains no symbols.  Should we complain
+            on blocks without symbols?  I can't think of any useful purpose
+            for them).  */
+         if (local_symbols != NULL)
            {
-             complain (&lbrac_rbrac_complaint);
-             new->start_addr = valu;
+             /* Muzzle a compiler bug that makes end < start.  (which
+                compilers?  Is this ever harmful?).  */
+             if (new->start_addr > valu)
+               {
+                 complain (&lbrac_rbrac_complaint);
+                 new->start_addr = valu;
+               }
+             /* Make a block for the local symbols within.  */
+             finish_block (0, &local_symbols, new->old_blocks,
+                           new->start_addr, valu, objfile);
            }
-         /* Make a block for the local symbols within.  */
-         finish_block (0, &local_symbols, new->old_blocks,
-                       new->start_addr, valu, objfile);
        }
       else
        {
+         /* This is the outermost LBRAC...RBRAC pair.  There is no
+            need to do anything; leave the symbols that preceded it
+            to be attached to the function's own block.  We need to
+            indicate that we just moved outside of the function.  */
          within_function = 0;
        }
+
       if (VARIABLES_INSIDE_BLOCK(desc, processing_gcc_compilation))
        /* Now pop locals of block just finished.  */
        local_symbols = new->locals;
@@ -1764,38 +1734,12 @@ process_one_symbol (type, desc, valu, name, section_offsets, objfile)
       break;
 
     case N_BCOMM:
-      if (common_block)
-       {
-         static struct complaint msg = {
-           "Invalid symbol data: common within common at symtab pos %d",
-           0, 0};
-         complain (&msg, symnum);
-       }
-      common_block = local_symbols;
-      common_block_i = local_symbols ? local_symbols->nsyms : 0;
+      common_block_start (name, objfile);
       break;
 
     case N_ECOMM:
-      /* Symbols declared since the BCOMM are to have the common block
-        start address added in when we know it.  common_block points to
-        the first symbol after the BCOMM in the local_symbols list;
-        copy the list and hang it off the symbol for the common block name
-        for later fixup.  */
-      {
-       int i;
-       struct symbol *sym =
-         (struct symbol *) xmmalloc (objfile -> md, sizeof (struct symbol));
-       memset (sym, 0, sizeof *sym);
-       SYMBOL_NAME (sym) = savestring (name, strlen (name));
-       SYMBOL_CLASS (sym) = LOC_BLOCK;
-       SYMBOL_NAMESPACE (sym) = (enum namespace)((long)
-         copy_pending (local_symbols, common_block_i, common_block));
-       i = hashname (SYMBOL_NAME (sym));
-       SYMBOL_VALUE_CHAIN (sym) = global_sym_chain[i];
-       global_sym_chain[i] = sym;
-       common_block = 0;
-       break;
-      }
+      common_block_end (objfile);
+      break;
 
     /* The following symbol types need to have the appropriate offset added
        to their value; then we process symbol definitions in the name.  */
@@ -1803,9 +1747,10 @@ process_one_symbol (type, desc, valu, name, section_offsets, objfile)
     case N_STSYM:              /* Static symbol in data seg */
     case N_LCSYM:              /* Static symbol in BSS seg */
     case N_ROSYM:              /* Static symbol in Read-only data seg */
-     /* HORRID HACK DEPT.  However, it's Sun's furgin' fault.  FIXME.
-       Solaris2's stabs-in-coff makes *most* symbols relative
-       but leaves a few absolute.  N_STSYM and friends sit on the fence.
+     /* HORRID HACK DEPT.  However, it's Sun's furgin' fault.
+       Solaris2's stabs-in-elf makes *most* symbols relative
+       but leaves a few absolute (at least for Solaris 2.1 and version
+       2.0.1 of the SunPRO compiler).  N_STSYM and friends sit on the fence.
        .stab "foo:S...",N_STSYM        is absolute (ld relocates it)
        .stab "foo:V...",N_STSYM        is relative (section base subtracted).
        This leaves us no choice but to search for the 'S' or 'V'...
@@ -1816,9 +1761,16 @@ process_one_symbol (type, desc, valu, name, section_offsets, objfile)
        p = strchr (name, ':');
        if (p != 0 && p[1] == 'S')
          {
-           /* FIXME!  We relocate it by the TEXT offset, in case the
-              whole module moved in memory.  But this is wrong, since
-              the sections can side around independently.  */
+           /* The linker relocated it.  We don't want to add an
+              elfstab_offset_sections-type offset, but we *do* want
+              to add whatever solib.c passed to symbol_file_add as
+              addr (this is known to affect SunOS4, and I suspect ELF
+              too).  Since elfstab_offset_sections currently does not
+              muck with the text offset (there is no Ttext.text
+              symbol), we can get addr from the text offset.  If
+              elfstab_offset_sections ever starts dealing with the
+              text offset, and we still need to do this, we need to
+              invent a SECT_OFF_ADDR_KLUDGE or something.  */
            valu += ANOFFSET (section_offsets, SECT_OFF_TEXT);
            goto define_a_symbol;
          }
@@ -1866,7 +1818,8 @@ process_one_symbol (type, desc, valu, name, section_offsets, objfile)
     case N_NBBSS:
     case N_NBSTS:
     case N_NBLCS:
-      complain (&unknown_symtype_complaint, local_hex_string(type));
+      complain (&unknown_symtype_complaint,
+               local_hex_string((unsigned long) type));
       /* FALLTHROUGH */
 
     /* The following symbol types don't need the address field relocated,
@@ -1912,6 +1865,15 @@ process_one_symbol (type, desc, valu, name, section_offsets, objfile)
                 previous function. This means that we can use the
                 minimal symbol table to get the address.  */
 
+             /* On solaris up to 2.2, the N_FUN stab gets relocated.
+                On Solaris 2.3, ld no longer relocates stabs (which
+                is good), and the N_FUN's value is now always zero.
+                The following code can't deal with this, because
+                last_pc_address depends on getting the address from a
+                N_SLINE or some such and in Solaris those are function
+                relative.  Best fix is probably to create a Ttext.text symbol
+                and handle this like Ddata.data and so on.  */
+
              if (type == N_GSYM || type == N_STSYM)
                {
                  struct minimal_symbol *m;
@@ -1998,32 +1960,85 @@ process_one_symbol (type, desc, valu, name, section_offsets, objfile)
   previous_stab_code = type;
 }
 \f
-/* Copy a pending list, used to record the contents of a common
-   block for later fixup.  We copy the symbols starting with all
-   symbols in BEG, and ending with the symbols which are in 
-   END at index ENDI.  */
-static struct pending *
-copy_pending (beg, endi, end)
-    struct pending *beg;
-    int endi;
-    struct pending *end;
+/* FIXME: The only difference between this and elfstab_build_psymtabs is
+   the call to install_minimal_symbols for elf.  If the differences are
+   really that small, the code should be shared.  */
+
+/* Scan and build partial symbols for an coff symbol file.
+   The coff file has already been processed to get its minimal symbols.
+
+   This routine is the equivalent of dbx_symfile_init and dbx_symfile_read
+   rolled into one.
+
+   OBJFILE is the object file we are reading symbols from.
+   ADDR is the address relative to which the symbols are (e.g.
+   the base address of the text segment).
+   MAINLINE is true if we are reading the main symbol
+   table (as opposed to a shared lib or dynamically loaded file).
+   STABOFFSET and STABSIZE define the location in OBJFILE where the .stab
+   section exists.
+   STABSTROFFSET and STABSTRSIZE define the location in OBJFILE where the
+   .stabstr section exists.
+
+   This routine is mostly copied from dbx_symfile_init and dbx_symfile_read,
+   adjusted for coff details. */
+
+void
+coffstab_build_psymtabs (objfile, section_offsets, mainline, 
+                              staboffset, stabsize,
+                              stabstroffset, stabstrsize)
+      struct objfile *objfile;
+      struct section_offsets *section_offsets;
+      int mainline;
+      file_ptr staboffset;
+      unsigned int stabsize;
+      file_ptr stabstroffset;
+      unsigned int stabstrsize;
 {
-  struct pending *new = 0;
-  struct pending *next;
-  int j;
+  int val;
+  bfd *sym_bfd = objfile->obfd;
+  char *name = bfd_get_filename (sym_bfd);
+  struct dbx_symfile_info *info;
 
-  /* Copy all the struct pendings before end.  */
-  for (next = beg; next != NULL && next != end; next = next->next)
-    {
-      for (j = 0; j < next->nsyms; j++)
-       add_symbol_to_list (next->symbol[j], &new);
-    }
+  /* There is already a dbx_symfile_info allocated by our caller.
+     It might even contain some info from the coff symtab to help us.  */
+  info = (struct dbx_symfile_info *) objfile->sym_stab_info;
+
+  DBX_TEXT_SECT (objfile) = bfd_get_section_by_name (sym_bfd, ".text");
+  if (!DBX_TEXT_SECT (objfile))
+    error ("Can't find .text section in symbol file");
+
+#define        COFF_STABS_SYMBOL_SIZE  12      /* XXX FIXME XXX */
+  DBX_SYMBOL_SIZE    (objfile) = COFF_STABS_SYMBOL_SIZE;
+  DBX_SYMCOUNT       (objfile) = stabsize / DBX_SYMBOL_SIZE (objfile);
+  DBX_STRINGTAB_SIZE (objfile) = stabstrsize;
+  DBX_SYMTAB_OFFSET  (objfile) = staboffset;
+  
+  if (stabstrsize > bfd_get_size (sym_bfd))
+    error ("ridiculous string table size: %d bytes", stabstrsize);
+  DBX_STRINGTAB (objfile) = (char *)
+    obstack_alloc (&objfile->psymbol_obstack, stabstrsize+1);
 
-  /* Copy however much of END we need.  */
-  for (j = endi; j < end->nsyms; j++)
-    add_symbol_to_list (end->symbol[j], &new);
+  /* Now read in the string table in one big gulp.  */
+
+  val = bfd_seek (sym_bfd, stabstroffset, SEEK_SET);
+  if (val < 0)
+    perror_with_name (name);
+  val = bfd_read (DBX_STRINGTAB (objfile), stabstrsize, 1, sym_bfd);
+  if (val != stabstrsize)
+    perror_with_name (name);
 
-  return new;
+  stabsread_new_init ();
+  buildsym_new_init ();
+  free_header_files ();
+  init_header_files ();
+
+  processing_acc_compilation = 1;
+
+  /* In a coff file, we've already installed the minimal symbols that came
+     from the coff (non-stab) symbol table, so always act like an
+     incremental load here. */
+  dbx_symfile_read (objfile, section_offsets, 0);
 }
 \f
 /* Scan and build partial symbols for an ELF symbol file.
@@ -2065,7 +2080,7 @@ elfstab_build_psymtabs (objfile, section_offsets, mainline,
 
   /* There is already a dbx_symfile_info allocated by our caller.
      It might even contain some info from the ELF symtab to help us.  */
-  info = (struct dbx_symfile_info *) objfile->sym_private;
+  info = (struct dbx_symfile_info *) objfile->sym_stab_info;
 
   DBX_TEXT_SECT (objfile) = bfd_get_section_by_name (sym_bfd, ".text");
   if (!DBX_TEXT_SECT (objfile))
@@ -2077,8 +2092,7 @@ elfstab_build_psymtabs (objfile, section_offsets, mainline,
   DBX_STRINGTAB_SIZE (objfile) = stabstrsize;
   DBX_SYMTAB_OFFSET  (objfile) = staboffset;
   
-  if (stabstrsize < 0  /* FIXME:  stabstrsize is unsigned; never true! */
-      || stabstrsize > bfd_get_size (sym_bfd))
+  if (stabstrsize > bfd_get_size (sym_bfd))
     error ("ridiculous string table size: %d bytes", stabstrsize);
   DBX_STRINGTAB (objfile) = (char *)
     obstack_alloc (&objfile->psymbol_obstack, stabstrsize+1);
@@ -2126,6 +2140,9 @@ pastab_build_psymtabs (objfile, section_offsets, mainline)
   free_header_files ();
   init_header_files ();
 
+  /* This is needed to debug objects assembled with gas2.  */
+  processing_acc_compilation = 1;
+
   /* In a PA file, we've already installed the minimal symbols that came
      from the PA (non-stab) symbol table, so always act like an
      incremental load here. */
@@ -2143,11 +2160,12 @@ dbx_symfile_offsets (objfile, addr)
 {
   struct section_offsets *section_offsets;
   int i;
+
+  objfile->num_sections = SECT_OFF_MAX;
   section_offsets = (struct section_offsets *)
     obstack_alloc (&objfile -> psymbol_obstack,
-                  sizeof (struct section_offsets) +
-                         sizeof (section_offsets->offsets) * (SECT_OFF_MAX-1));
+                  sizeof (struct section_offsets)
+                  + sizeof (section_offsets->offsets) * (SECT_OFF_MAX-1));
 
   for (i = 0; i < SECT_OFF_MAX; i++)
     ANOFFSET (section_offsets, i) = addr;
@@ -2155,36 +2173,9 @@ dbx_symfile_offsets (objfile, addr)
   return section_offsets;
 }
 \f
-/* Register our willingness to decode symbols for SunOS and a.out and
-   NetBSD and b.out files handled by BFD... */
-static struct sym_fns sunos_sym_fns =
-{
-  "sunOs",             /* sym_name: name or name prefix of BFD target type */
-  6,                   /* sym_namelen: number of significant sym_name chars */
-  dbx_new_init,                /* sym_new_init: init anything gbl to entire symtab */
-  dbx_symfile_init,    /* sym_init: read initial info, setup for sym_read() */
-  dbx_symfile_read,    /* sym_read: read a symbol file into symtab */
-  dbx_symfile_finish,  /* sym_finish: finished with file, cleanup */
-  dbx_symfile_offsets, /* sym_offsets: parse user's offsets to internal form */
-  NULL                 /* next: pointer to next struct sym_fns */
-};
-
 static struct sym_fns aout_sym_fns =
 {
-  "a.out",             /* sym_name: name or name prefix of BFD target type */
-  5,                   /* sym_namelen: number of significant sym_name chars */
-  dbx_new_init,                /* sym_new_init: init anything gbl to entire symtab */
-  dbx_symfile_init,    /* sym_init: read initial info, setup for sym_read() */
-  dbx_symfile_read,    /* sym_read: read a symbol file into symtab */
-  dbx_symfile_finish,  /* sym_finish: finished with file, cleanup */
-  dbx_symfile_offsets, /* sym_offsets: parse user's offsets to internal form */
-  NULL                 /* next: pointer to next struct sym_fns */
-};
-
-static struct sym_fns bout_sym_fns =
-{
-  "b.out",             /* sym_name: name or name prefix of BFD target type */
-  5,                   /* sym_namelen: number of significant sym_name chars */
+  bfd_target_aout_flavour,
   dbx_new_init,                /* sym_new_init: init anything gbl to entire symtab */
   dbx_symfile_init,    /* sym_init: read initial info, setup for sym_read() */
   dbx_symfile_read,    /* sym_read: read a symbol file into symtab */
@@ -2196,7 +2187,5 @@ static struct sym_fns bout_sym_fns =
 void
 _initialize_dbxread ()
 {
-  add_symtab_fns(&sunos_sym_fns);
   add_symtab_fns(&aout_sym_fns);
-  add_symtab_fns(&bout_sym_fns);
 }
This page took 0.030932 seconds and 4 git commands to generate.