x86: Adjust linker tests for --disable-separate-code
[binutils-gdb.git] / gdb / dbxread.c
index c0155593e3b4301021ac06d00cb540db6509c94e..4d846990a56b37e172af9bf9dc5b55fcf4c16a09 100644 (file)
@@ -1,5 +1,5 @@
 /* Read dbx symbol tables and convert to internal format, for GDB.
-   Copyright (C) 1986-2020 Free Software Foundation, Inc.
+   Copyright (C) 1986-2021 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
    for real.  dbx_psymtab_to_symtab() is the function that does this */
 
 #include "defs.h"
-#if defined(__CYGNUSCLIB__)
-#include <sys/types.h>
-#include <fcntl.h>
-#endif
 
 #include "gdb_obstack.h"
 #include <sys/stat.h>
@@ -270,7 +266,8 @@ static void dbx_read_symtab (legacy_psymtab *self,
 
 static void dbx_expand_psymtab (legacy_psymtab *, struct objfile *);
 
-static void read_dbx_symtab (minimal_symbol_reader &, struct objfile *);
+static void read_dbx_symtab (minimal_symbol_reader &, psymtab_storage *,
+                            struct objfile *);
 
 static legacy_psymtab *find_corresponding_bincl_psymtab (const char *,
                                                                int);
@@ -297,8 +294,8 @@ static void add_old_header_file (const char *, int);
 
 static void add_this_object_header_file (int);
 
-static legacy_psymtab *start_psymtab (struct objfile *, const char *,
-                                            CORE_ADDR, int);
+static legacy_psymtab *start_psymtab (psymtab_storage *, struct objfile *,
+                                     const char *, CORE_ADDR, int);
 
 /* Free up old header file tables.  */
 
@@ -461,8 +458,8 @@ record_minimal_symbol (minimal_symbol_reader &reader,
       break;
     case N_SETV:
       /* I don't think this type actually exists; since a N_SETV is the result
-         of going over many .o files, it doesn't make sense to have one
-         file local.  */
+        of going over many .o files, it doesn't make sense to have one
+        file local.  */
       ms_type = mst_file_data;
       section = SECT_OFF_DATA (objfile);
       break;
@@ -478,9 +475,9 @@ record_minimal_symbol (minimal_symbol_reader &reader,
       ms_type = mst_file_data;
 
       /* Check for __DYNAMIC, which is used by Sun shared libraries. 
-         Record it as global even if it's local, not global, so
-         lookup_minimal_symbol can find it.  We don't check symbol_leading_char
-         because for SunOS4 it always is '_'.  */
+        Record it as global even if it's local, not global, so
+        lookup_minimal_symbol can find it.  We don't check symbol_leading_char
+        because for SunOS4 it always is '_'.  */
       if (name[8] == 'C' && strcmp ("__DYNAMIC", name) == 0)
        ms_type = mst_data;
 
@@ -535,9 +532,6 @@ dbx_symfile_read (struct objfile *objfile, symfile_add_flags symfile_flags)
   if (val < 0)
     perror_with_name (objfile_name (objfile));
 
-  /* Size the symbol table.  */
-  init_psymbol_list (objfile, DBX_SYMCOUNT (objfile));
-
   symbol_size = DBX_SYMBOL_SIZE (objfile);
   symbol_table_offset = DBX_SYMTAB_OFFSET (objfile);
 
@@ -547,7 +541,10 @@ dbx_symfile_read (struct objfile *objfile, symfile_add_flags symfile_flags)
 
   /* Read stabs data from executable file and define symbols.  */
 
-  read_dbx_symtab (reader, objfile);
+  psymbol_functions *psf = new psymbol_functions ();
+  psymtab_storage *partial_symtabs = psf->get_partial_symtabs ().get ();
+  objfile->qf.emplace_front (psf);
+  read_dbx_symtab (reader, partial_symtabs, objfile);
 
   /* Install any minimal symbols that have been collected as the current
      minimal symbols for this objfile.  */
@@ -630,8 +627,8 @@ dbx_symfile_init (struct objfile *objfile)
   if (STRING_TABLE_OFFSET == 0)
     {
       /* It appears that with the existing bfd code, STRING_TABLE_OFFSET
-         will never be zero, even when there is no string table.  This
-         would appear to be a bug in bfd.  */
+        will never be zero, even when there is no string table.  This
+        would appear to be a bug in bfd.  */
       DBX_STRINGTAB_SIZE (objfile) = 0;
       DBX_STRINGTAB (objfile) = NULL;
     }
@@ -765,7 +762,7 @@ fill_symbuf (bfd *sym_bfd)
     {
       nbytes = sizeof (symbuf);
       if (nbytes > symbuf_left)
-        nbytes = symbuf_left;
+       nbytes = symbuf_left;
       memcpy (symbuf, stabs_data + symbuf_read, nbytes);
     }
   else if (symbuf_sections == NULL)
@@ -913,8 +910,8 @@ find_stab_function (const char *namestring, const char *filename,
   if (msym.minsym == NULL)
     {
       /* Sun Fortran appends an underscore to the minimal symbol name,
-         try again with an appended underscore if the minimal symbol
-         was not found.  */
+        try again with an appended underscore if the minimal symbol
+        was not found.  */
       p[n] = '_';
       p[n + 1] = 0;
       msym = lookup_minimal_symbol (p, filename, objfile);
@@ -949,7 +946,9 @@ function_outside_compilation_unit_complaint (const char *arg1)
    debugging information is available.  */
 
 static void
-read_dbx_symtab (minimal_symbol_reader &reader, struct objfile *objfile)
+read_dbx_symtab (minimal_symbol_reader &reader,
+                psymtab_storage *partial_symtabs,
+                struct objfile *objfile)
 {
   struct gdbarch *gdbarch = objfile->arch ();
   struct external_nlist *bufp = 0;     /* =0 avoids gcc -Wall glitch.  */
@@ -1069,15 +1068,15 @@ read_dbx_symtab (minimal_symbol_reader &reader, struct objfile *objfile)
       OBJSTAT (objfile, n_stabs++);
 
       /* Ok.  There is a lot of code duplicated in the rest of this
-         switch statement (for efficiency reasons).  Since I don't
-         like duplicating code, I will do my penance here, and
-         describe the code which is duplicated:
+        switch statement (for efficiency reasons).  Since I don't
+        like duplicating code, I will do my penance here, and
+        describe the code which is duplicated:
 
-         *) The assignment to namestring.
-         *) The call to strchr.
-         *) The addition of a partial symbol the two partial
-         symbol lists.  This last is a large section of code, so
-         I've imbedded it in the following macro.  */
+        *) The assignment to namestring.
+        *) The call to strchr.
+        *) The addition of a partial symbol the two partial
+        symbol lists.  This last is a large section of code, so
+        I've imbedded it in the following macro.  */
 
       switch (nlist.n_type)
        {
@@ -1130,7 +1129,8 @@ read_dbx_symtab (minimal_symbol_reader &reader, struct objfile *objfile)
                     which are not the address.  */
                  && nlist.n_value >= pst->raw_text_low ())
                {
-                 dbx_end_psymtab (objfile, pst, psymtab_include_list,
+                 dbx_end_psymtab (objfile, partial_symtabs,
+                                  pst, psymtab_include_list,
                                   includes_used, symnum * symbol_size,
                                   nlist.n_value > pst->raw_text_high ()
                                   ? nlist.n_value : pst->raw_text_high (),
@@ -1245,7 +1245,8 @@ read_dbx_symtab (minimal_symbol_reader &reader, struct objfile *objfile)
 
                if (pst)
                  {
-                   dbx_end_psymtab (objfile, pst, psymtab_include_list,
+                   dbx_end_psymtab (objfile, partial_symtabs,
+                                    pst, psymtab_include_list,
                                     includes_used, symnum * symbol_size,
                                     (valu > pst->raw_text_high ()
                                      ? valu : pst->raw_text_high ()),
@@ -1278,8 +1279,8 @@ read_dbx_symtab (minimal_symbol_reader &reader, struct objfile *objfile)
              {
                /* Save the directory name SOs locally, then save it into
                   the psymtab when it's created below.  */
-               dirname_nso = namestring;
-               continue;               
+               dirname_nso = namestring;
+               continue;               
              }
 
            /* Some other compilers (C++ ones in particular) emit useless
@@ -1288,7 +1289,7 @@ read_dbx_symtab (minimal_symbol_reader &reader, struct objfile *objfile)
 
            if (!pst)
              {
-               pst = start_psymtab (objfile,
+               pst = start_psymtab (partial_symtabs, objfile,
                                     namestring, valu,
                                     first_so_symnum * symbol_size);
                pst->dirname = dirname_nso;
@@ -1429,25 +1430,26 @@ read_dbx_symtab (minimal_symbol_reader &reader, struct objfile *objfile)
          if (!p)
            continue;           /* Not a debugging symbol.   */
 
-         sym_len = 0;
+         sym_len = 0;
          sym_name = NULL;      /* pacify "gcc -Werror" */
-         if (psymtab_language == language_cplus)
-           {
+         if (psymtab_language == language_cplus)
+           {
              std::string name (namestring, p - namestring);
-             std::string new_name = cp_canonicalize_string (name.c_str ());
-             if (!new_name.empty ())
+             gdb::unique_xmalloc_ptr<char> new_name
+               = cp_canonicalize_string (name.c_str ());
+             if (new_name != nullptr)
                {
-                 sym_len = new_name.length ();
+                 sym_len = strlen (new_name.get ());
                  sym_name = obstack_strdup (&objfile->objfile_obstack,
-                                            new_name);
+                                            new_name.get ());
                }
            }
 
-         if (sym_len == 0)
-           {
-             sym_name = namestring;
-             sym_len = p - namestring;
-           }
+         if (sym_len == 0)
+           {
+             sym_name = namestring;
+             sym_len = p - namestring;
+           }
 
          /* Main processing section for debugging symbols which
             the initial read through the symbol tables needs to worry
@@ -1459,24 +1461,23 @@ read_dbx_symtab (minimal_symbol_reader &reader, struct objfile *objfile)
          switch (p[1])
            {
            case 'S':
-             if (gdbarch_static_transform_name_p (gdbarch))
-               gdbarch_static_transform_name (gdbarch, namestring);
-
-             add_psymbol_to_list (gdb::string_view (sym_name, sym_len), true,
-                                  VAR_DOMAIN, LOC_STATIC,
-                                  data_sect_index,
-                                  psymbol_placement::STATIC,
-                                  nlist.n_value, psymtab_language, objfile);
+             pst->add_psymbol (gdb::string_view (sym_name, sym_len), true,
+                               VAR_DOMAIN, LOC_STATIC,
+                               data_sect_index,
+                               psymbol_placement::STATIC,
+                               nlist.n_value, psymtab_language,
+                               partial_symtabs, objfile);
              continue;
 
            case 'G':
              /* The addresses in these entries are reported to be
                 wrong.  See the code that reads 'G's for symtabs.  */
-             add_psymbol_to_list (gdb::string_view (sym_name, sym_len), true,
-                                  VAR_DOMAIN, LOC_STATIC,
-                                  data_sect_index,
-                                  psymbol_placement::GLOBAL,
-                                  nlist.n_value, psymtab_language, objfile);
+             pst->add_psymbol (gdb::string_view (sym_name, sym_len), true,
+                               VAR_DOMAIN, LOC_STATIC,
+                               data_sect_index,
+                               psymbol_placement::GLOBAL,
+                               nlist.n_value, psymtab_language,
+                               partial_symtabs, objfile);
              continue;
 
            case 'T':
@@ -1490,17 +1491,19 @@ read_dbx_symtab (minimal_symbol_reader &reader, struct objfile *objfile)
                  || (p == namestring + 1
                      && namestring[0] != ' '))
                {
-                 add_psymbol_to_list (gdb::string_view (sym_name, sym_len),
-                                      true, STRUCT_DOMAIN, LOC_TYPEDEF, -1,
-                                      psymbol_placement::STATIC,
-                                      0, psymtab_language, objfile);
+                 pst->add_psymbol (gdb::string_view (sym_name, sym_len),
+                                   true, STRUCT_DOMAIN, LOC_TYPEDEF, -1,
+                                   psymbol_placement::STATIC,
+                                   0, psymtab_language,
+                                   partial_symtabs, objfile);
                  if (p[2] == 't')
                    {
                      /* Also a typedef with the same name.  */
-                     add_psymbol_to_list (gdb::string_view (sym_name, sym_len),
-                                          true, VAR_DOMAIN, LOC_TYPEDEF, -1,
-                                          psymbol_placement::STATIC,
-                                          0, psymtab_language, objfile);
+                     pst->add_psymbol (gdb::string_view (sym_name, sym_len),
+                                       true, VAR_DOMAIN, LOC_TYPEDEF, -1,
+                                       psymbol_placement::STATIC,
+                                       0, psymtab_language,
+                                       partial_symtabs, objfile);
                      p += 1;
                    }
                }
@@ -1509,10 +1512,11 @@ read_dbx_symtab (minimal_symbol_reader &reader, struct objfile *objfile)
            case 't':
              if (p != namestring)      /* a name is there, not just :T...  */
                {
-                 add_psymbol_to_list (gdb::string_view (sym_name, sym_len),
-                                      true, VAR_DOMAIN, LOC_TYPEDEF, -1,
-                                      psymbol_placement::STATIC,
-                                      0, psymtab_language, objfile);
+                 pst->add_psymbol (gdb::string_view (sym_name, sym_len),
+                                   true, VAR_DOMAIN, LOC_TYPEDEF, -1,
+                                   psymbol_placement::STATIC,
+                                   0, psymtab_language,
+                                   partial_symtabs, objfile);
                }
            check_enum:
              /* If this is an enumerated type, we need to
@@ -1570,10 +1574,11 @@ read_dbx_symtab (minimal_symbol_reader &reader, struct objfile *objfile)
                        ;
                      /* Note that the value doesn't matter for
                         enum constants in psymtabs, just in symtabs.  */
-                     add_psymbol_to_list (gdb::string_view (p, q - p), true,
-                                          VAR_DOMAIN, LOC_CONST, -1,
-                                          psymbol_placement::STATIC, 0,
-                                          psymtab_language, objfile);
+                     pst->add_psymbol (gdb::string_view (p, q - p), true,
+                                       VAR_DOMAIN, LOC_CONST, -1,
+                                       psymbol_placement::STATIC, 0,
+                                       psymtab_language,
+                                       partial_symtabs, objfile);
                      /* Point past the name.  */
                      p = q;
                      /* Skip over the value.  */
@@ -1588,10 +1593,11 @@ read_dbx_symtab (minimal_symbol_reader &reader, struct objfile *objfile)
 
            case 'c':
              /* Constant, e.g. from "const" in Pascal.  */
-             add_psymbol_to_list (gdb::string_view (sym_name, sym_len), true,
-                                  VAR_DOMAIN, LOC_CONST, -1,
-                                  psymbol_placement::STATIC, 0,
-                                  psymtab_language, objfile);
+             pst->add_psymbol (gdb::string_view (sym_name, sym_len), true,
+                               VAR_DOMAIN, LOC_CONST, -1,
+                               psymbol_placement::STATIC, 0,
+                               psymtab_language,
+                               partial_symtabs, objfile);
              continue;
 
            case 'f':
@@ -1643,11 +1649,12 @@ read_dbx_symtab (minimal_symbol_reader &reader, struct objfile *objfile)
                  pst->set_text_low (nlist.n_value);
                  textlow_not_set = 0;
                }
-             add_psymbol_to_list (gdb::string_view (sym_name, sym_len), true,
-                                  VAR_DOMAIN, LOC_BLOCK,
-                                  SECT_OFF_TEXT (objfile),
-                                  psymbol_placement::STATIC,
-                                  nlist.n_value, psymtab_language, objfile);
+             pst->add_psymbol (gdb::string_view (sym_name, sym_len), true,
+                               VAR_DOMAIN, LOC_BLOCK,
+                               SECT_OFF_TEXT (objfile),
+                               psymbol_placement::STATIC,
+                               nlist.n_value, psymtab_language,
+                               partial_symtabs, objfile);
              continue;
 
              /* Global functions were ignored here, but now they
@@ -1702,11 +1709,12 @@ read_dbx_symtab (minimal_symbol_reader &reader, struct objfile *objfile)
                  pst->set_text_low (nlist.n_value);
                  textlow_not_set = 0;
                }
-             add_psymbol_to_list (gdb::string_view (sym_name, sym_len), true,
-                                  VAR_DOMAIN, LOC_BLOCK,
-                                  SECT_OFF_TEXT (objfile),
-                                  psymbol_placement::GLOBAL,
-                                  nlist.n_value, psymtab_language, objfile);
+             pst->add_psymbol (gdb::string_view (sym_name, sym_len), true,
+                               VAR_DOMAIN, LOC_BLOCK,
+                               SECT_OFF_TEXT (objfile),
+                               psymbol_placement::GLOBAL,
+                               nlist.n_value, psymtab_language,
+                               partial_symtabs, objfile);
              continue;
 
              /* Two things show up here (hopefully); static symbols of
@@ -1818,7 +1826,7 @@ read_dbx_symtab (minimal_symbol_reader &reader, struct objfile *objfile)
             compiled without debugging info follows this module.  */
          if (pst && gdbarch_sofun_address_maybe_missing (gdbarch))
            {
-             dbx_end_psymtab (objfile, pst,
+             dbx_end_psymtab (objfile, partial_symtabs, pst,
                               psymtab_include_list, includes_used,
                               symnum * symbol_size,
                               (CORE_ADDR) 0, dependency_list,
@@ -1884,7 +1892,8 @@ read_dbx_symtab (minimal_symbol_reader &reader, struct objfile *objfile)
         : lowest_text_address)
        + text_size;
 
-      dbx_end_psymtab (objfile, pst, psymtab_include_list, includes_used,
+      dbx_end_psymtab (objfile, partial_symtabs,
+                      pst, psymtab_include_list, includes_used,
                       symnum * symbol_size,
                       (text_end > pst->raw_text_high ()
                        ? text_end : pst->raw_text_high ()),
@@ -1900,10 +1909,11 @@ read_dbx_symtab (minimal_symbol_reader &reader, struct objfile *objfile)
    (normal).  */
 
 static legacy_psymtab *
-start_psymtab (struct objfile *objfile, const char *filename, CORE_ADDR textlow,
-              int ldsymoff)
+start_psymtab (psymtab_storage *partial_symtabs, struct objfile *objfile,
+              const char *filename, CORE_ADDR textlow, int ldsymoff)
 {
-  legacy_psymtab *result = new legacy_psymtab (filename, objfile, textlow);
+  legacy_psymtab *result = new legacy_psymtab (filename, partial_symtabs,
+                                              objfile->per_bfd, textlow);
 
   result->read_symtab_private =
     XOBNEW (&objfile->objfile_obstack, struct symloc);
@@ -1928,7 +1938,8 @@ start_psymtab (struct objfile *objfile, const char *filename, CORE_ADDR textlow,
    FIXME:  List variables and peculiarities of same.  */
 
 legacy_psymtab *
-dbx_end_psymtab (struct objfile *objfile, legacy_psymtab *pst,
+dbx_end_psymtab (struct objfile *objfile, psymtab_storage *partial_symtabs,
+                legacy_psymtab *pst,
                 const char **include_list, int num_includes,
                 int capping_symbol_offset, CORE_ADDR capping_text,
                 legacy_psymtab **dependency_list,
@@ -1998,24 +2009,24 @@ dbx_end_psymtab (struct objfile *objfile, legacy_psymtab *pst,
   else
     {
       /* If we know our own starting text address, then walk through all other
-         psymtabs for this objfile, and if any didn't know their ending text
-         address, set it to our starting address.  Take care to not set our
-         own ending address to our starting address.  */
+        psymtabs for this objfile, and if any didn't know their ending text
+        address, set it to our starting address.  Take care to not set our
+        own ending address to our starting address.  */
 
-      for (partial_symtab *p1 : objfile->psymtabs ())
+      for (partial_symtab *p1 : partial_symtabs->range ())
        if (!p1->text_high_valid && p1->text_low_valid && p1 != pst)
          p1->set_text_high (pst->raw_text_low ());
     }
 
   /* End of kludge for patching Solaris textlow and texthigh.  */
 
-  end_psymtab_common (objfile, pst);
+  pst->end ();
 
   pst->number_of_dependencies = number_dependencies;
   if (number_dependencies)
     {
       pst->dependencies
-       = objfile->partial_symtabs->allocate_dependencies (number_dependencies);
+       = partial_symtabs->allocate_dependencies (number_dependencies);
       memcpy (pst->dependencies, dependency_list,
              number_dependencies * sizeof (legacy_psymtab *));
     }
@@ -2025,7 +2036,7 @@ dbx_end_psymtab (struct objfile *objfile, legacy_psymtab *pst,
   for (i = 0; i < num_includes; i++)
     {
       legacy_psymtab *subpst =
-       new legacy_psymtab (include_list[i], objfile);
+       new legacy_psymtab (include_list[i], partial_symtabs, objfile->per_bfd);
 
       subpst->read_symtab_private =
        XOBNEW (&objfile->objfile_obstack, struct symloc);
@@ -2033,9 +2044,9 @@ dbx_end_psymtab (struct objfile *objfile, legacy_psymtab *pst,
        LDSYMLEN (subpst) = 0;
 
       /* We could save slight bits of space by only making one of these,
-         shared by the entire set of include files.  FIXME-someday.  */
+        shared by the entire set of include files.  FIXME-someday.  */
       subpst->dependencies =
-       objfile->partial_symtabs->allocate_dependencies (1);
+       partial_symtabs->allocate_dependencies (1);
       subpst->dependencies[0] = pst;
       subpst->number_of_dependencies = 1;
 
@@ -2045,19 +2056,17 @@ dbx_end_psymtab (struct objfile *objfile, legacy_psymtab *pst,
 
   if (num_includes == 0
       && number_dependencies == 0
-      && pst->n_global_syms == 0
-      && pst->n_static_syms == 0
+      && pst->empty ()
       && has_line_numbers == 0)
     {
-      /* Throw away this psymtab, it's empty.  We can't deallocate it, since
-         it is on the obstack, but we can forget to chain it on the list.  */
+      /* Throw away this psymtab, it's empty.  */
       /* Empty psymtabs happen as a result of header files which don't have
-         any symbols in them.  There can be a lot of them.  But this check
-         is wrong, in that a psymtab with N_SLINE entries but nothing else
-         is not empty, but we don't realize that.  Fixing that without slowing
-         things down might be tricky.  */
+        any symbols in them.  There can be a lot of them.  But this check
+        is wrong, in that a psymtab with N_SLINE entries but nothing else
+        is not empty, but we don't realize that.  Fixing that without slowing
+        things down might be tricky.  */
 
-      objfile->partial_symtabs->discard_psymtab (pst);
+      partial_symtabs->discard_psymtab (pst);
 
       /* Indicate that psymtab was thrown away.  */
       pst = NULL;
@@ -2117,7 +2126,7 @@ dbx_read_symtab (legacy_psymtab *self, struct objfile *objfile)
       }
 
       /* Match with global symbols.  This only needs to be done once,
-         after all of the symtabs and dependencies have been read in.   */
+        after all of the symtabs and dependencies have been read in.   */
       scan_file_globals (objfile);
     }
 }
@@ -2189,8 +2198,8 @@ read_ofile_symtab (struct objfile *objfile, legacy_psymtab *pst)
   else
     {
       /* The N_SO starting this symtab is the first symbol, so we
-         better not check the symbol before it.  I'm not this can
-         happen, but it doesn't hurt to check for it.  */
+        better not check the symbol before it.  I'm not this can
+        happen, but it doesn't hurt to check for it.  */
       stabs_seek (sym_offset);
       processing_gcc_compilation = 0;
     }
@@ -2238,7 +2247,7 @@ read_ofile_symtab (struct objfile *objfile, legacy_psymtab *pst)
                              PST_LANGUAGE (pst));
        }
       /* We skip checking for a new .o or -l file; that should never
-         happen in this routine.  */
+        happen in this routine.  */
       else if (type == N_TEXT)
        {
          /* I don't think this code will ever be executed, because
@@ -2369,9 +2378,9 @@ process_one_symbol (int type, int desc, CORE_ADDR valu, const char *name,
   if (get_last_source_file () == NULL && type != (unsigned char) N_SO)
     {
       /* Ignore any symbols which appear before an N_SO symbol.
-         Currently no one puts symbols there, but we should deal
-         gracefully with the case.  A complain()t might be in order,
-         but this should not be an error ().  */
+        Currently no one puts symbols there, but we should deal
+        gracefully with the case.  A complain()t might be in order,
+        but this should not be an error ().  */
       return;
     }
 
@@ -2387,10 +2396,10 @@ process_one_symbol (int type, int desc, CORE_ADDR valu, const char *name,
          struct block *block;
 
          if (outermost_context_p ())
-           {
+           {
              lbrac_mismatch_complaint (symnum);
-             break;
-           }
+             break;
+           }
 
          /* The following check is added before recording line 0 at
             end of function so as to handle hand-generated stabs
@@ -2434,7 +2443,7 @@ process_one_symbol (int type, int desc, CORE_ADDR valu, const char *name,
 
     case N_LBRAC:
       /* This "symbol" just indicates the start of an inner lexical
-         context within a function.  */
+        context within a function.  */
 
       /* Ignore extra outermost context from SunPRO cc and acc.  */
       if (n_opt_found && desc == 1)
@@ -2447,7 +2456,7 @@ process_one_symbol (int type, int desc, CORE_ADDR valu, const char *name,
 
     case N_RBRAC:
       /* This "symbol" just indicates the end of an inner lexical
-         context that was started with N_LBRAC.  */
+        context that was started with N_LBRAC.  */
 
       /* Ignore extra outermost context from SunPRO cc and acc.  */
       if (n_opt_found && desc == 1)
@@ -2513,15 +2522,15 @@ process_one_symbol (int type, int desc, CORE_ADDR valu, const char *name,
     case N_FN:
     case N_FN_SEQ:
       /* This kind of symbol indicates the start of an object file.
-         Relocate for dynamic loading.  */
+        Relocate for dynamic loading.  */
       valu += section_offsets[SECT_OFF_TEXT (objfile)];
       break;
 
     case N_SO:
       /* This type of symbol indicates the start of data for one
-         source file.  Finish the symbol table of the previous source
-         file (if any) and start accumulating a new symbol table.
-         Relocate for dynamic loading.  */
+        source file.  Finish the symbol table of the previous source
+        file (if any) and start accumulating a new symbol table.
+        Relocate for dynamic loading.  */
       valu += section_offsets[SECT_OFF_TEXT (objfile)];
 
       n_opt_found = 0;
@@ -2542,7 +2551,7 @@ process_one_symbol (int type, int desc, CORE_ADDR valu, const char *name,
        }
 
       /* Null name means this just marks the end of text for this .o
-         file.  Don't start a new symtab in this case.  */
+        file.  Don't start a new symtab in this case.  */
       if (*name == '\000')
        break;
 
@@ -2555,9 +2564,9 @@ process_one_symbol (int type, int desc, CORE_ADDR valu, const char *name,
 
     case N_SOL:
       /* This type of symbol indicates the start of data for a
-         sub-source-file, one whose contents were copied or included
-         in the compilation of the main source file (whose name was
-         given in the N_SO symbol).  Relocate for dynamic loading.  */
+        sub-source-file, one whose contents were copied or included
+        in the compilation of the main source file (whose name was
+        given in the N_SO symbol).  Relocate for dynamic loading.  */
       valu += section_offsets[SECT_OFF_TEXT (objfile)];
       start_subfile (name);
       break;
@@ -2578,11 +2587,11 @@ process_one_symbol (int type, int desc, CORE_ADDR valu, const char *name,
 
     case N_SLINE:
       /* This type of "symbol" really just records one line-number --
-         core-address correspondence.  Enter it in the line list for
-         this symbol table.  */
+        core-address correspondence.  Enter it in the line list for
+        this symbol table.  */
 
       /* Relocate for dynamic loading and for ELF acc
-         function-relative symbols.  */
+        function-relative symbols.  */
       valu += function_start_offset;
 
       /* GCC 2.95.3 emits the first N_SLINE stab somewhere in the
@@ -2622,22 +2631,22 @@ process_one_symbol (int type, int desc, CORE_ADDR valu, const char *name,
       break;
 
       /* The following symbol types need to have the appropriate
-         offset added to their value; then we process symbol
-         definitions in the name.  */
+        offset added to their value; then we process symbol
+        definitions in the name.  */
 
     case N_STSYM:              /* Static symbol in data segment.  */
     case N_LCSYM:              /* Static symbol in BSS segment.  */
     case N_ROSYM:              /* Static symbol in read-only data segment.  */
       /* HORRID HACK DEPT.  However, it's Sun's furgin' fault.
-         Solaris 2'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'...  (or pass the whole section_offsets stuff
-         down ONE MORE function call level, which we really don't want
-         to do).  */
+        Solaris 2'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'...  (or pass the whole section_offsets stuff
+        down ONE MORE function call level, which we really don't want
+        to do).  */
       {
        const char *p;
 
@@ -2663,7 +2672,7 @@ process_one_symbol (int type, int desc, CORE_ADDR valu, const char *name,
              }
          }
        /* Since it's not the kludge case, re-dispatch to the right
-           handler.  */
+          handler.  */
        switch (type)
          {
          case N_STSYM:
@@ -2699,8 +2708,8 @@ process_one_symbol (int type, int desc, CORE_ADDR valu, const char *name,
       goto define_a_symbol;
 
       /* The following symbol types we don't know how to process.
-         Handle them in a "default" way, but complain to people who
-         care.  */
+        Handle them in a "default" way, but complain to people who
+        care.  */
     default:
     case N_CATCH:              /* Exception handler catcher.  */
     case N_EHDECL:             /* Exception handler name.  */
@@ -2719,7 +2728,7 @@ process_one_symbol (int type, int desc, CORE_ADDR valu, const char *name,
 
     define_a_symbol:
       /* These symbol types don't need the address field relocated,
-         since it is either unused, or is absolute.  */
+        since it is either unused, or is absolute.  */
     case N_GSYM:               /* Global variable.  */
     case N_NSYMS:              /* Number of symbols (Ultrix).  */
     case N_NOMAP:              /* No map?  (Ultrix).  */
@@ -2744,7 +2753,7 @@ process_one_symbol (int type, int desc, CORE_ADDR valu, const char *name,
            case 'f':
            case 'F':
              /* Deal with the SunPRO 3.0 compiler which omits the
-                address from N_FUN symbols.  */
+                address from N_FUN symbols.  */
              if (type == N_FUN
                  && valu == section_offsets[SECT_OFF_TEXT (objfile)]
                  && gdbarch_sofun_address_maybe_missing (gdbarch))
@@ -2796,8 +2805,8 @@ process_one_symbol (int type, int desc, CORE_ADDR valu, const char *name,
       break;
 
       /* We use N_OPT to carry the gcc2_compiled flag.  Sun uses it
-         for a bunch of other flags, too.  Someday we may parse their
-         flags; for now we ignore theirs and hope they'll ignore ours.  */
+        for a bunch of other flags, too.  Someday we may parse their
+        flags; for now we ignore theirs and hope they'll ignore ours.  */
     case N_OPT:                        /* Solaris 2: Compiler options.  */
       if (name)
        {
@@ -2828,7 +2837,7 @@ process_one_symbol (int type, int desc, CORE_ADDR valu, const char *name,
     case N_PATCH:              /* Solaris 2: Patch Run Time Checker.  */
       /* N_UNDF:                   Solaris 2: File separator mark.  */
       /* N_UNDF: -- we will never encounter it, since we only process
-         one file's symbols at once.  */
+        one file's symbols at once.  */
     case N_ENDM:               /* Solaris 2: End of module.  */
     case N_ALIAS:              /* SunPro F77: alias name, ignore for now.  */
       break;
@@ -2843,17 +2852,17 @@ process_one_symbol (int type, int desc, CORE_ADDR valu, const char *name,
   if (name[0] == '#')
     {
       /* Initialize symbol reference names and determine if this is a
-         definition.  If a symbol reference is being defined, go ahead
-         and add it.  Otherwise, just return.  */
+        definition.  If a symbol reference is being defined, go ahead
+        and add it.  Otherwise, just return.  */
 
       const char *s = name;
       int refnum;
 
       /* If this stab defines a new reference ID that is not on the
-         reference list, then put it on the reference list.
+        reference list, then put it on the reference list.
 
-         We go ahead and advance NAME past the reference, even though
-         it is not strictly necessary at this time.  */
+        We go ahead and advance NAME past the reference, even though
+        it is not strictly necessary at this time.  */
       refnum = symbol_reference_defined (&s);
       if (refnum >= 0)
        if (!ref_search (refnum))
@@ -3130,14 +3139,12 @@ static const struct sym_fns aout_sym_fns =
   dbx_new_init,                        /* init anything gbl to entire symtab */
   dbx_symfile_init,            /* read initial info, setup for sym_read() */
   dbx_symfile_read,            /* read a symbol file into symtab */
-  NULL,                                /* sym_read_psymbols */
   dbx_symfile_finish,          /* finished with file, cleanup */
   default_symfile_offsets,     /* parse user's offsets to internal form */
   default_symfile_segments,    /* Get segment information from a file.  */
   NULL,
   default_symfile_relocate,    /* Relocate a debug section.  */
   NULL,                                /* sym_probe_fns */
-  &psym_functions
 };
 
 void _initialize_dbxread ();