]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blobdiff - gdb/os9kread.c
Protoization.
[thirdparty/binutils-gdb.git] / gdb / os9kread.c
index 5b9489bee89df59f89ad1d68ec73391b75af5df7..d9fafe553a7d19f1e56d8cd1499dfea9c422270b 100644 (file)
@@ -1,22 +1,23 @@
 /* Read os9/os9k symbol tables and convert to internal format, for GDB.
-   Copyright 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1996
+   Copyright 1986, 87, 88, 89, 90, 91, 92, 93, 94, 96, 1998
    Free Software Foundation, Inc.
 
-This file is part of GDB.
+   This file is part of GDB.
 
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2 of the License, or
+   (at your option) any later version.
 
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
 
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
 
 /* This module provides three functions: os9k_symfile_init,
    which initializes to read a symbol file; os9k_new_init, which 
@@ -49,7 +50,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 #include "command.h"
 #include "target.h"
 #include "gdbcore.h"           /* for bfd stuff */
-#include "libaout.h"           /* FIXME Secret internal BFD stuff for a.out */
+#include "libaout.h"           /* FIXME Secret internal BFD stuff for a.out */
 #include "symfile.h"
 #include "objfiles.h"
 #include "buildsym.h"
@@ -60,6 +61,8 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 #include "os9k.h"
 #include "stabsread.h"
 
+extern void _initialize_os9kread (void);
+
 /* Each partial symbol table entry contains a pointer to private data for the
    read_symtab() function to use when expanding a partial symbol table entry
    to a full symbol table entry.
@@ -76,10 +79,11 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 #define LDSYMOFF(p) (((struct symloc *)((p)->read_symtab_private))->ldsymoff)
 #define LDSYMCNT(p) (((struct symloc *)((p)->read_symtab_private))->ldsymnum)
 
-struct symloc {
-  int ldsymoff;
-  int ldsymnum;
-};
+struct symloc
+  {
+    int ldsymoff;
+    int ldsymnum;
+  };
 
 /* Remember what we deduced to be the source language of this psymtab. */
 static enum language psymtab_language = language_unknown;
@@ -114,61 +118,49 @@ extern struct complaint repeated_header_name_complaint;
 
 #if 0
 static struct complaint lbrac_unmatched_complaint =
-  {"unmatched Increment Block Entry before symtab pos %d", 0, 0};
+{"unmatched Increment Block Entry before symtab pos %d", 0, 0};
 
 static struct complaint lbrac_mismatch_complaint =
-  {"IBE/IDE symbol mismatch at symtab pos %d", 0, 0};
+{"IBE/IDE symbol mismatch at symtab pos %d", 0, 0};
 #endif
 \f
 /* Local function prototypes */
 
-static void
-read_minimal_symbols PARAMS ((struct objfile *, struct section_offsets *));
+static void read_minimal_symbols (struct objfile *);
 
-static void
-os9k_read_ofile_symtab PARAMS ((struct partial_symtab *));
+static void os9k_read_ofile_symtab (struct partial_symtab *);
 
-static void
-os9k_psymtab_to_symtab PARAMS ((struct partial_symtab *));
+static void os9k_psymtab_to_symtab (struct partial_symtab *);
 
-static void
-os9k_psymtab_to_symtab_1 PARAMS ((struct partial_symtab *));
+static void os9k_psymtab_to_symtab_1 (struct partial_symtab *);
 
-static void
-read_os9k_psymtab PARAMS ((struct section_offsets *, struct objfile *,
-                         CORE_ADDR, int));
+static void read_os9k_psymtab (struct objfile *, CORE_ADDR, int);
 
-static int
-fill_sym PARAMS ((FILE *, bfd *));
+static int fill_sym (FILE *, bfd *);
 
-static void
-os9k_symfile_init PARAMS ((struct objfile *));
+static void os9k_symfile_init (struct objfile *);
 
-static void
-os9k_new_init PARAMS ((struct objfile *));
+static void os9k_new_init (struct objfile *);
 
-static void
-os9k_symfile_read PARAMS ((struct objfile *, struct section_offsets *, int));
+static void os9k_symfile_read (struct objfile *, int);
 
-static void
-os9k_symfile_finish PARAMS ((struct objfile *));
+static void os9k_symfile_finish (struct objfile *);
 
 static void
-os9k_process_one_symbol PARAMS ((int, int, CORE_ADDR, char *, 
-     struct section_offsets *, struct objfile *));
+os9k_process_one_symbol (int, int, CORE_ADDR, char *,
+                        struct section_offsets *, struct objfile *);
 
-static struct partial_symtab *
-os9k_start_psymtab PARAMS ((struct objfile *, struct section_offsets *, char *,
-                       CORE_ADDR, int, int, struct partial_symbol **,
-                       struct partial_symbol **));
+static struct partial_symtab *os9k_start_psymtab (struct objfile *, char *,
+                                                 CORE_ADDR, int, int,
+                                                 struct partial_symbol **,
+                                                 struct partial_symbol **);
 
-static struct partial_symtab *
-os9k_end_psymtab PARAMS ((struct partial_symtab *, char **, int, int, CORE_ADDR,
-                     struct partial_symtab **, int));
+static struct partial_symtab *os9k_end_psymtab (struct partial_symtab *,
+                                               char **, int, int, CORE_ADDR,
+                                               struct partial_symtab **,
+                                               int);
 
-static void
-record_minimal_symbol PARAMS ((char *, CORE_ADDR, int, struct objfile *, 
-                    struct section_offsets *));
+static void record_minimal_symbol (char *, CORE_ADDR, int, struct objfile *);
 \f
 #define HANDLE_RBRAC(val) \
   if ((val) > pst->texthigh) pst->texthigh = (val);
@@ -194,115 +186,119 @@ record_minimal_symbol PARAMS ((char *, CORE_ADDR, int, struct objfile *,
 #define N_ABS 6
 
 static void
-record_minimal_symbol (name, address, type, objfile, section_offsets)
-     char *name;
-     CORE_ADDR address;
-     int type;
-     struct objfile *objfile;
-     struct section_offsets *section_offsets;
+record_minimal_symbol (char *name, CORE_ADDR address, int type,
+                      struct objfile *objfile)
 {
   enum minimal_symbol_type ms_type;
 
   switch (type)
     {
     case N_TEXT:
-         ms_type = mst_text;
-         address += ANOFFSET(section_offsets, SECT_OFF_TEXT);
-         break;
+      ms_type = mst_text;
+      address += ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
+      break;
     case N_DATA:
-         ms_type = mst_data;
-         break;
+      ms_type = mst_data;
+      break;
     case N_BSS:
-          ms_type = mst_bss;
-         break;
+      ms_type = mst_bss;
+      break;
     case N_RDATA:
-         ms_type = mst_bss;
-         break;
-    case N_IDATA:      
-         ms_type = mst_data;
-         break;
+      ms_type = mst_bss;
+      break;
+    case N_IDATA:
+      ms_type = mst_data;
+      break;
     case N_ABS:
-         ms_type = mst_abs;
-         break;
+      ms_type = mst_abs;
+      break;
     default:
-          ms_type = mst_unknown; break;
-  }
+      ms_type = mst_unknown;
+      break;
+    }
 
   prim_record_minimal_symbol (name, address, ms_type, objfile);
 }
 
 /* read and process .stb file and store in minimal symbol table */
 typedef char mhhdr[80];
-struct stbhdr {
-       mhhdr comhdr;
-       char * name;
-       short fmtno;
-       int crc;
-       int offset;
-       int nsym;
-       char *pad;
-};
-struct stbsymbol {
-       int value;
-       short type;
-       int stroff;
-};
+struct stbhdr
+  {
+    mhhdr comhdr;
+    char *name;
+    short fmtno;
+    int crc;
+    int offset;
+    int nsym;
+    char *pad;
+  };
+struct stbsymbol
+  {
+    int value;
+    short type;
+    int stroff;
+  };
 #define STBSYMSIZE 10
 
 static void
-read_minimal_symbols(objfile, section_offsets)
-     struct objfile *objfile;
-     struct section_offsets *section_offsets;
+read_minimal_symbols (struct objfile *objfile)
 {
-FILE *fp;
-bfd *abfd;
-struct stbhdr hdr;
-struct stbsymbol sym;
-int ch, i, j, off;
-char buf[64], buf1[128];
-               
+  FILE *fp;
+  bfd *abfd;
+  struct stbhdr hdr;
+  struct stbsymbol sym;
+  int ch, i, j, off;
+  char buf[64], buf1[128];
+
   fp = objfile->auxf1;
-  if (fp == NULL) return;
+  if (fp == NULL)
+    return;
   abfd = objfile->obfd;
-  fread(&hdr.comhdr[0], sizeof(mhhdr), 1, fp);
+  fread (&hdr.comhdr[0], sizeof (mhhdr), 1, fp);
   i = 0;
-  ch = getc(fp);
-  while (ch != -1) {
-    buf[i] = (char)ch;
-    i++;
-    if (ch == 0) break;
-    ch = getc(fp);
-  };
-  if (i%2) ch=getc(fp);
+  ch = getc (fp);
+  while (ch != -1)
+    {
+      buf[i] = (char) ch;
+      i++;
+      if (ch == 0)
+       break;
+      ch = getc (fp);
+    };
+  if (i % 2)
+    ch = getc (fp);
   hdr.name = &buf[0];
 
-  fread(&hdr.fmtno, sizeof(hdr.fmtno), 1, fp);
-  fread(&hdr.crc, sizeof(hdr.crc), 1, fp);
-  fread(&hdr.offset, sizeof(hdr.offset), 1, fp);
-  fread(&hdr.nsym, sizeof(hdr.nsym), 1, fp);
-  SWAP_STBHDR(&hdr, abfd);      
-       
+  fread (&hdr.fmtno, sizeof (hdr.fmtno), 1, fp);
+  fread (&hdr.crc, sizeof (hdr.crc), 1, fp);
+  fread (&hdr.offset, sizeof (hdr.offset), 1, fp);
+  fread (&hdr.nsym, sizeof (hdr.nsym), 1, fp);
+  SWAP_STBHDR (&hdr, abfd);
+
   /* read symbols */
-  init_minimal_symbol_collection();
+  init_minimal_symbol_collection ();
   off = hdr.offset;
-  for (i = hdr.nsym; i > 0; i--) {
-    fseek(fp, (long)off, 0);
-    fread(&sym.value, sizeof(sym.value), 1, fp);
-    fread(&sym.type, sizeof(sym.type), 1, fp);
-    fread(&sym.stroff, sizeof(sym.stroff), 1, fp);
-    SWAP_STBSYM (&sym, abfd);
-    fseek(fp, (long)sym.stroff, 0);
-    j = 0;
-    ch = getc(fp);
-    while (ch != -1) {
-       buf1[j] = (char)ch;
-       j++;
-       if (ch == 0) break;
-       ch = getc(fp);
+  for (i = hdr.nsym; i > 0; i--)
+    {
+      fseek (fp, (long) off, 0);
+      fread (&sym.value, sizeof (sym.value), 1, fp);
+      fread (&sym.type, sizeof (sym.type), 1, fp);
+      fread (&sym.stroff, sizeof (sym.stroff), 1, fp);
+      SWAP_STBSYM (&sym, abfd);
+      fseek (fp, (long) sym.stroff, 0);
+      j = 0;
+      ch = getc (fp);
+      while (ch != -1)
+       {
+         buf1[j] = (char) ch;
+         j++;
+         if (ch == 0)
+           break;
+         ch = getc (fp);
+       };
+      record_minimal_symbol (buf1, sym.value, sym.type & 7, objfile);
+      off += STBSYMSIZE;
     };
-    record_minimal_symbol(buf1, sym.value, sym.type&7, objfile, section_offsets);
-    off += STBSYMSIZE;
-  };
   install_minimal_symbols (objfile);
   return;
 }
@@ -312,35 +308,32 @@ char buf[64], buf1[128];
    put all the relevant info into a "struct os9k_symfile_info",
    hung off the objfile structure.
 
-   SECTION_OFFSETS contains offsets relative to which the symbols in the
-   various sections are (depending where the sections were actually loaded).
    MAINLINE is true if we are reading the main symbol
    table (as opposed to a shared lib or dynamically loaded file).  */
 
 static void
-os9k_symfile_read (objfile, section_offsets, mainline)
+os9k_symfile_read (objfile, mainline)
      struct objfile *objfile;
-     struct section_offsets *section_offsets;
-     int mainline;     /* FIXME comments above */
+     int mainline;             /* FIXME comments above */
 {
   bfd *sym_bfd;
   struct cleanup *back_to;
 
   sym_bfd = objfile->obfd;
   /* If we are reinitializing, or if we have never loaded syms yet, init */
-  if (mainline || objfile->global_psymbols.size == 0 || 
-    objfile->static_psymbols.size == 0)
+  if (mainline || objfile->global_psymbols.size == 0 ||
+      objfile->static_psymbols.size == 0)
     init_psymbol_list (objfile, DBX_SYMCOUNT (objfile));
 
   free_pending_blocks ();
   back_to = make_cleanup (really_free_pendings, 0);
 
-  make_cleanup (discard_minimal_symbols, 0);
-  read_minimal_symbols (objfile, section_offsets);
+  make_cleanup_discard_minimal_symbols ();
+  read_minimal_symbols (objfile);
 
   /* Now that the symbol table data of the executable file are all in core,
      process them and define symbols accordingly.  */
-  read_os9k_psymtab (section_offsets, objfile,
+  read_os9k_psymtab (objfile,
                     DBX_TEXT_ADDR (objfile),
                     DBX_TEXT_SIZE (objfile));
 
@@ -352,15 +345,14 @@ os9k_symfile_read (objfile, section_offsets, mainline)
    file, e.g. a shared library).  */
 
 static void
-os9k_new_init (ignore)
-     struct objfile *ignore;
+os9k_new_init (struct objfile *ignore)
 {
   stabsread_new_init ();
   buildsym_new_init ();
   psymfile_depth = 0;
 /*
-  init_header_files ();
-*/
+   init_header_files ();
+ */
 }
 
 /* os9k_symfile_init ()
@@ -374,8 +366,7 @@ os9k_new_init (ignore)
    FIXME, there should be a cleaner peephole into the BFD environment here.  */
 
 static void
-os9k_symfile_init (objfile)
-     struct objfile *objfile;
+os9k_symfile_init (struct objfile *objfile)
 {
   bfd *sym_bfd = objfile->obfd;
   char *name = bfd_get_filename (sym_bfd);
@@ -384,24 +375,26 @@ os9k_symfile_init (objfile)
   FILE *minfile = 0;
   asection *text_sect;
 
-  strcpy(dbgname, name);
-  strcat(dbgname, ".dbg");
-  strcpy(stbname, name);
-  strcat(stbname, ".stb");
+  strcpy (dbgname, name);
+  strcat (dbgname, ".dbg");
+  strcpy (stbname, name);
+  strcat (stbname, ".stb");
 
-  if ((symfile = fopen(dbgname, "r")) == NULL) {
-    warning("Symbol file %s not found", dbgname);
-  }
+  if ((symfile = fopen (dbgname, "r")) == NULL)
+    {
+      warning ("Symbol file %s not found", dbgname);
+    }
   objfile->auxf2 = symfile;
 
-  if ((minfile = fopen(stbname, "r")) == NULL) {
-    warning("Symbol file %s not found", stbname);
-  }
+  if ((minfile = fopen (stbname, "r")) == NULL)
+    {
+      warning ("Symbol file %s not found", stbname);
+    }
   objfile->auxf1 = minfile;
 
   /* Allocate struct to keep track of the symfile */
-  objfile->sym_stab_info = (PTR)
-    xmmalloc (objfile -> md, sizeof (struct dbx_symfile_info));
+  objfile->sym_stab_info = (struct dbx_symfile_info *)
+    xmmalloc (objfile->md, sizeof (struct dbx_symfile_info));
   DBX_SYMFILE_INFO (objfile)->stab_section_info = NULL;
 
   text_sect = bfd_get_section_by_name (sym_bfd, ".text");
@@ -410,9 +403,9 @@ os9k_symfile_init (objfile)
   DBX_TEXT_ADDR (objfile) = bfd_section_vma (sym_bfd, text_sect);
   DBX_TEXT_SIZE (objfile) = bfd_section_size (sym_bfd, text_sect);
 
-  DBX_SYMBOL_SIZE (objfile) = 0;     /* variable size symbol */
-  DBX_SYMCOUNT (objfile) =  0;  /* used to be bfd_get_symcount(sym_bfd) */
-  DBX_SYMTAB_OFFSET (objfile) = 0;  /* used to be SYMBOL_TABLE_OFFSET */
+  DBX_SYMBOL_SIZE (objfile) = 0;       /* variable size symbol */
+  DBX_SYMCOUNT (objfile) = 0;  /* used to be bfd_get_symcount(sym_bfd) */
+  DBX_SYMTAB_OFFSET (objfile) = 0;     /* used to be SYMBOL_TABLE_OFFSET */
 }
 
 /* Perform any local cleanups required when we are done with a particular
@@ -421,20 +414,20 @@ os9k_symfile_init (objfile)
    objfile struct from the global list of known objfiles. */
 
 static void
-os9k_symfile_finish (objfile)
-     struct objfile *objfile;
+os9k_symfile_finish (struct objfile *objfile)
 {
   if (objfile->sym_stab_info != NULL)
     {
-      mfree (objfile -> md, objfile->sym_stab_info);
+      mfree (objfile->md, objfile->sym_stab_info);
     }
 /*
-  free_header_files ();
-*/
+   free_header_files ();
+ */
 }
-
 \f
-struct st_dbghdr {
+
+struct st_dbghdr
+{
   int sync;
   short rev;
   int crc;
@@ -459,12 +452,13 @@ struct st_dbghdr {
 #define N_SYM_RBRAC     4
 #define N_SYM_SE        5
 
-struct internal_symstruct {
-  short n_type;
-  short n_desc;
-  long n_value;
-  char * n_strx;
-};
+struct internal_symstruct
+  {
+    short n_type;
+    short n_desc;
+    long n_value;
+    char *n_strx;
+  };
 static struct internal_symstruct symbol;
 static struct internal_symstruct *symbuf = &symbol;
 static char strbuf[4096];
@@ -475,16 +469,14 @@ static short cmplrid;
 #define VER_ULTRAC     ((short)5)
 
 static int
-fill_sym (dbg_file, abfd)
-     FILE *dbg_file;
-     bfd *abfd;
+fill_sym (FILE *dbg_file, bfd *abfd)
 {
-short si, nmask;
-long li;
-int ii;
-char *p;
+  short si, nmask;
+  long li;
+  int ii;
+  char *p;
 
-  int nbytes = fread(&si, sizeof(si), 1, dbg_file);
+  int nbytes = fread (&si, sizeof (si), 1, dbg_file);
   if (nbytes == 0)
     return 0;
   if (nbytes < 0)
@@ -492,71 +484,68 @@ char *p;
   symbuf->n_desc = 0;
   symbuf->n_value = 0;
   symbuf->n_strx = NULL;
-  symbuf->n_type = bfd_get_16 (abfd, (unsigned char *)&si);
+  symbuf->n_type = bfd_get_16 (abfd, (unsigned char *) &si);
   symbuf->n_type = 0xf & symbuf->n_type;
   switch (symbuf->n_type)
     {
     case N_SYM_CMPLR:
-      fread(&si, sizeof(si), 1, dbg_file);
-      symbuf->n_desc = bfd_get_16(abfd, (unsigned char *)&si);
+      fread (&si, sizeof (si), 1, dbg_file);
+      symbuf->n_desc = bfd_get_16 (abfd, (unsigned char *) &si);
       cmplrid = symbuf->n_desc & 0xff;
       break;
     case N_SYM_SLINE:
-      fread(&li, sizeof(li), 1, dbg_file);
-      symbuf->n_value = bfd_get_32(abfd, (unsigned char *)&li);
-      fread(&li, sizeof(li), 1, dbg_file);
-      li = bfd_get_32(abfd, (unsigned char *)&li);
-      symbuf->n_strx = (char *)(li >> 12);
+      fread (&li, sizeof (li), 1, dbg_file);
+      symbuf->n_value = bfd_get_32 (abfd, (unsigned char *) &li);
+      fread (&li, sizeof (li), 1, dbg_file);
+      li = bfd_get_32 (abfd, (unsigned char *) &li);
+      symbuf->n_strx = (char *) (li >> 12);
       symbuf->n_desc = li & 0xfff;
       break;
     case N_SYM_SYM:
-      fread(&li, sizeof(li), 1, dbg_file);
-      symbuf->n_value = bfd_get_32(abfd, (unsigned char *)&li);
+      fread (&li, sizeof (li), 1, dbg_file);
+      symbuf->n_value = bfd_get_32 (abfd, (unsigned char *) &li);
       si = 0;
-      do {
-       ii = getc(dbg_file);
-       strbuf[si++] = (char) ii;
-      } while (ii != 0 || si % 2 != 0);
+      do
+       {
+         ii = getc (dbg_file);
+         strbuf[si++] = (char) ii;
+       }
+      while (ii != 0 || si % 2 != 0);
       symbuf->n_strx = strbuf;
       p = (char *) strchr (strbuf, ':');
-      if (!p) break;
+      if (!p)
+       break;
       if ((p[1] == 'F' || p[1] == 'f') && cmplrid == VER_PRE_ULTRAC)
        {
-         fread(&si, sizeof(si), 1, dbg_file);
-         nmask = bfd_get_16(abfd, (unsigned char *)&si);
-         for (ii=0; ii<nmask; ii++)
-           fread(&si, sizeof(si), 1, dbg_file);
+         fread (&si, sizeof (si), 1, dbg_file);
+         nmask = bfd_get_16 (abfd, (unsigned char *) &si);
+         for (ii = 0; ii < nmask; ii++)
+           fread (&si, sizeof (si), 1, dbg_file);
        }
       break;
     case N_SYM_LBRAC:
-      fread(&li, sizeof(li), 1, dbg_file);
-      symbuf->n_value = bfd_get_32(abfd, (unsigned char *)&li);
+      fread (&li, sizeof (li), 1, dbg_file);
+      symbuf->n_value = bfd_get_32 (abfd, (unsigned char *) &li);
       break;
     case N_SYM_RBRAC:
-      fread(&li, sizeof(li), 1, dbg_file);
-      symbuf->n_value = bfd_get_32(abfd, (unsigned char *)&li);
+      fread (&li, sizeof (li), 1, dbg_file);
+      symbuf->n_value = bfd_get_32 (abfd, (unsigned char *) &li);
       break;
     case N_SYM_SE:
       break;
     }
-    return 1;
+  return 1;
 }
 \f
 /* Given pointers to an a.out symbol table in core containing dbx
    style data, setup partial_symtab's describing each source file for
    which debugging information is available.
-   SYMFILE_NAME is the name of the file we are reading from
-   and SECTION_OFFSETS is the set of offsets for the various sections
-   of the file (a set of zeros if the mainline program).  */
+   SYMFILE_NAME is the name of the file we are reading from. */
 
 static void
-read_os9k_psymtab (section_offsets, objfile, text_addr, text_size)
-     struct section_offsets *section_offsets;
-     struct objfile *objfile;
-     CORE_ADDR text_addr;
-     int text_size;
+read_os9k_psymtab (struct objfile *objfile, CORE_ADDR text_addr, int text_size)
 {
-  register struct internal_symstruct *bufp = 0;        /* =0 avoids gcc -Wall glitch*/
+  register struct internal_symstruct *bufp = 0;                /* =0 avoids gcc -Wall glitch */
   register char *namestring;
   int past_first_source_file = 0;
   CORE_ADDR last_o_file_start = 0;
@@ -597,67 +586,71 @@ read_os9k_psymtab (section_offsets, objfile, text_addr, text_size)
 #ifdef END_OF_TEXT_DEFAULT
   end_of_text_addr = END_OF_TEXT_DEFAULT;
 #else
-  end_of_text_addr = text_addr + section_offsets->offsets[SECT_OFF_TEXT]
-                              + text_size;     /* Relocate */
+  end_of_text_addr = text_addr + ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile))
+    + text_size;               /* Relocate */
 #endif
 
   abfd = objfile->obfd;
-  fp = objfile->auxf2; 
-  if (!fp) return;
-               
-  fread(&dbghdr.sync, sizeof(dbghdr.sync), 1, fp);
-  fread(&dbghdr.rev, sizeof(dbghdr.rev), 1, fp);
-  fread(&dbghdr.crc, sizeof(dbghdr.crc), 1, fp);
-  fread(&dbghdr.os, sizeof(dbghdr.os), 1, fp);
-  fread(&dbghdr.cpu, sizeof(dbghdr.cpu), 1, fp);
-  SWAP_DBGHDR(&dbghdr, abfd);      
+  fp = objfile->auxf2;
+  if (!fp)
+    return;
+
+  fread (&dbghdr.sync, sizeof (dbghdr.sync), 1, fp);
+  fread (&dbghdr.rev, sizeof (dbghdr.rev), 1, fp);
+  fread (&dbghdr.crc, sizeof (dbghdr.crc), 1, fp);
+  fread (&dbghdr.os, sizeof (dbghdr.os), 1, fp);
+  fread (&dbghdr.cpu, sizeof (dbghdr.cpu), 1, fp);
+  SWAP_DBGHDR (&dbghdr, abfd);
 
   symnum = 0;
-  while(1)
+  while (1)
     {
-    int ret;
-    long cursymoffset;
+      int ret;
+      long cursymoffset;
 
       /* Get the symbol for this run and pull out some info */
-      QUIT;    /* allow this to be interruptable */
-      cursymoffset = ftell(objfile->auxf2);
-      ret = fill_sym(objfile->auxf2, abfd);
-      if (ret <= 0) break;
-      else symnum++;
+      QUIT;                    /* allow this to be interruptable */
+      cursymoffset = ftell (objfile->auxf2);
+      ret = fill_sym (objfile->auxf2, abfd);
+      if (ret <= 0)
+       break;
+      else
+       symnum++;
       bufp = symbuf;
 
       /* Special case to speed up readin. */
-      if (bufp->n_type == (short)N_SYM_SLINE) continue;
+      if (bufp->n_type == (short) N_SYM_SLINE)
+       continue;
 
 #define CUR_SYMBOL_VALUE bufp->n_value
       /* partial-stab.h */
 
       switch (bufp->n_type)
        {
-       char *p;
+         char *p;
 
        case N_SYM_CMPLR:
          continue;
 
        case N_SYM_SE:
-          CUR_SYMBOL_VALUE += ANOFFSET(section_offsets, SECT_OFF_TEXT);
+         CUR_SYMBOL_VALUE += ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
          if (psymfile_depth == 1 && pst)
            {
              os9k_end_psymtab (pst, psymtab_include_list, includes_used,
-                      symnum, CUR_SYMBOL_VALUE,
-                      dependency_list, dependencies_used);
+                               symnum, CUR_SYMBOL_VALUE,
+                               dependency_list, dependencies_used);
              pst = (struct partial_symtab *) 0;
              includes_used = 0;
              dependencies_used = 0;
            }
-         psymfile_depth--;
+         psymfile_depth--;
          continue;
 
-       case N_SYM_SYM:         /* Typedef or automatic variable. */
+       case N_SYM_SYM: /* Typedef or automatic variable. */
          namestring = bufp->n_strx;
-          p = (char *) strchr (namestring, ':');
-          if (!p)
-            continue;           /* Not a debugging symbol.   */
+         p = (char *) strchr (namestring, ':');
+         if (!p)
+           continue;           /* Not a debugging symbol.   */
 
          /* Main processing section for debugging symbols which
             the initial read through the symbol tables needs to worry
@@ -668,69 +661,74 @@ read_os9k_psymtab (section_offsets, objfile, text_addr, text_size)
 
          switch (p[1])
            {
-           case 'S' :
+           case 'S':
              {
                unsigned long valu;
-               enum language tmp_language;
+               enum language tmp_language;
                char *str, *p;
                int n;
-               
+
                valu = CUR_SYMBOL_VALUE;
                if (valu)
-                 valu += ANOFFSET (section_offsets, SECT_OFF_TEXT);
+                 valu += ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
                past_first_source_file = 1;
 
-                p = strchr(namestring, ':');
-                if (p) n = p-namestring;
-                else n = strlen(namestring);
-                str = alloca(n+1);
-                strncpy(str, namestring, n);
-                str[n] = '\0';
-
-               if (psymfile_depth == 0) {
-                 if (!pst)
-                   pst = os9k_start_psymtab (objfile, section_offsets,
-                                str, valu,
-                                cursymoffset,
-                                symnum-1,
-                                objfile -> global_psymbols.next,
-                                objfile -> static_psymbols.next);
-               } else { /* this is a include file */
-                 tmp_language = deduce_language_from_filename (str);
-                 if (tmp_language != language_unknown
-                       && (tmp_language != language_c
-                       || psymtab_language != language_cplus))
-                       psymtab_language = tmp_language;
+               p = strchr (namestring, ':');
+               if (p)
+                 n = p - namestring;
+               else
+                 n = strlen (namestring);
+               str = alloca (n + 1);
+               strncpy (str, namestring, n);
+               str[n] = '\0';
 
-/*
-                 if (pst && STREQ (str, pst->filename))
-                   continue;
+               if (psymfile_depth == 0)
                  {
-                   register int i;
-                   for (i = 0; i < includes_used; i++)
-                     if (STREQ (str, psymtab_include_list[i]))
-                       {
-                         i = -1; 
-                         break;
-                       }
-                   if (i == -1)
-                     continue;
+                   if (!pst)
+                     pst = os9k_start_psymtab (objfile,
+                                               str, valu,
+                                               cursymoffset,
+                                               symnum - 1,
+                                             objfile->global_psymbols.next,
+                                            objfile->static_psymbols.next);
                  }
-*/
-
-                  psymtab_include_list[includes_used++] = str;
-                  if (includes_used >= includes_allocated)
-                    {
-                      char **orig = psymtab_include_list;
+               else
+                 {             /* this is a include file */
+                   tmp_language = deduce_language_from_filename (str);
+                   if (tmp_language != language_unknown
+                       && (tmp_language != language_c
+                           || psymtab_language != language_cplus))
+                     psymtab_language = tmp_language;
 
-                      psymtab_include_list = (char **)
-                         alloca ((includes_allocated *= 2) * sizeof (char *));
-                      memcpy ((PTR)psymtab_include_list, (PTR)orig,
-                          includes_used * sizeof (char *));
-                   }
+/*
+   if (pst && STREQ (str, pst->filename))
+   continue;
+   {
+   register int i;
+   for (i = 0; i < includes_used; i++)
+   if (STREQ (str, psymtab_include_list[i]))
+   {
+   i = -1; 
+   break;
+   }
+   if (i == -1)
+   continue;
+   }
+ */
+
+                   psymtab_include_list[includes_used++] = str;
+                   if (includes_used >= includes_allocated)
+                     {
+                       char **orig = psymtab_include_list;
+
+                       psymtab_include_list = (char **)
+                         alloca ((includes_allocated *= 2) * sizeof (char *));
+                       memcpy ((PTR) psymtab_include_list, (PTR) orig,
+                               includes_used * sizeof (char *));
+                     }
 
-               }
-               psymfile_depth++;
+                 }
+               psymfile_depth++;
                continue;
              }
 
@@ -763,7 +761,7 @@ read_os9k_psymtab (section_offsets, objfile, text_addr, text_size)
                      add_psymbol_to_list (namestring, p - namestring,
                                           VAR_NAMESPACE, LOC_TYPEDEF,
                                           &objfile->static_psymbols,
-                                          CUR_SYMBOL_VALUE, 0, psymtab_language,
+                                     CUR_SYMBOL_VALUE, 0, psymtab_language,
                                           objfile);
                      p += 1;
                    }
@@ -773,14 +771,14 @@ read_os9k_psymtab (section_offsets, objfile, text_addr, text_size)
                     We make the typedef here so that "ptype foo" works as
                     expected for cfront translated code.  */
                  else if (psymtab_language == language_cplus)
-                  {
+                   {
                      /* Also a typedef with the same name.  */
                      add_psymbol_to_list (namestring, p - namestring,
                                           VAR_NAMESPACE, LOC_TYPEDEF,
                                           &objfile->static_psymbols,
-                                          CUR_SYMBOL_VALUE, 0, psymtab_language,
+                                     CUR_SYMBOL_VALUE, 0, psymtab_language,
                                           objfile);
-                  }
+                   }
                }
              goto check_enum;
            case 't':
@@ -794,22 +792,22 @@ read_os9k_psymtab (section_offsets, objfile, text_addr, text_size)
                }
            check_enum:
              /* If this is an enumerated type, we need to
-                add all the enum constants to the partial symbol
-                table.  This does not cover enums without names, e.g.
-                "enum {a, b} c;" in C, but fortunately those are
-                rare.  There is no way for GDB to find those from the
-                enum type without spending too much time on it.  Thus
-                to solve this problem, the compiler needs to put out the
-                enum in a nameless type.  GCC2 does this.  */
+                add all the enum constants to the partial symbol
+                table.  This does not cover enums without names, e.g.
+                "enum {a, b} c;" in C, but fortunately those are
+                rare.  There is no way for GDB to find those from the
+                enum type without spending too much time on it.  Thus
+                to solve this problem, the compiler needs to put out the
+                enum in a nameless type.  GCC2 does this.  */
 
              /* We are looking for something of the form
-                <name> ":" ("t" | "T") [<number> "="] "e" <size>
-                {<constant> ":" <value> ","} ";".  */
+                <name> ":" ("t" | "T") [<number> "="] "e" <size>
+                {<constant> ":" <value> ","} ";".  */
 
              /* Skip over the colon and the 't' or 'T'.  */
              p += 2;
              /* This type may be given a number.  Also, numbers can come
-                in pairs like (0,26).  Skip over it.  */
+                in pairs like (0,26).  Skip over it.  */
              while ((*p >= '0' && *p <= '9')
                     || *p == '(' || *p == ',' || *p == ')'
                     || *p == '=')
@@ -818,7 +816,8 @@ read_os9k_psymtab (section_offsets, objfile, text_addr, text_size)
              if (*p++ == 'e')
                {
                  /* We have found an enumerated type. skip size */
-                 while (*p >= '0' && *p <= '9') p++;
+                 while (*p >= '0' && *p <= '9')
+                   p++;
                  /* According to comments in read_enum_type
                     a comma could end it instead of a semicolon.
                     I don't know where that happens.
@@ -828,17 +827,17 @@ read_os9k_psymtab (section_offsets, objfile, text_addr, text_size)
                      char *q;
 
                      /* Check for and handle cretinous dbx symbol name
-                        continuation! 
-                     if (*p == '\\')
-                       p = next_symbol_text (objfile);
-                     */
+                        continuation! 
+                        if (*p == '\\')
+                        p = next_symbol_text (objfile);
+                      */
 
                      /* Point to the character after the name
-                        of the enum constant.  */
+                        of the enum constant.  */
                      for (q = p; *q && *q != ':'; q++)
                        ;
                      /* Note that the value doesn't matter for
-                        enum constants in psymtabs, just in symtabs.  */
+                        enum constants in psymtabs, just in symtabs.  */
                      add_psymbol_to_list (p, q - p,
                                           VAR_NAMESPACE, LOC_CONST,
                                           &objfile->static_psymbols, 0,
@@ -858,63 +857,63 @@ read_os9k_psymtab (section_offsets, objfile, text_addr, text_size)
              /* Constant, e.g. from "const" in Pascal.  */
              add_psymbol_to_list (namestring, p - namestring,
                                   VAR_NAMESPACE, LOC_CONST,
-                                  &objfile->static_psymbols, CUR_SYMBOL_VALUE,
+                               &objfile->static_psymbols, CUR_SYMBOL_VALUE,
                                   0, psymtab_language, objfile);
              continue;
 
            case 'f':
-             CUR_SYMBOL_VALUE += ANOFFSET(section_offsets, SECT_OFF_TEXT);
-              if (pst && pst->textlow == 0)
-                pst->textlow = CUR_SYMBOL_VALUE;
+             CUR_SYMBOL_VALUE += ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
+             if (pst && pst->textlow == 0)
+               pst->textlow = CUR_SYMBOL_VALUE;
 
              add_psymbol_to_list (namestring, p - namestring,
                                   VAR_NAMESPACE, LOC_BLOCK,
-                                  &objfile->static_psymbols, CUR_SYMBOL_VALUE,
+                               &objfile->static_psymbols, CUR_SYMBOL_VALUE,
                                   0, psymtab_language, objfile);
              continue;
 
            case 'F':
-             CUR_SYMBOL_VALUE += ANOFFSET(section_offsets, SECT_OFF_TEXT);
-              if (pst && pst->textlow == 0)
-                pst->textlow = CUR_SYMBOL_VALUE;
+             CUR_SYMBOL_VALUE += ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
+             if (pst && pst->textlow == 0)
+               pst->textlow = CUR_SYMBOL_VALUE;
 
              add_psymbol_to_list (namestring, p - namestring,
                                   VAR_NAMESPACE, LOC_BLOCK,
-                                  &objfile->global_psymbols, CUR_SYMBOL_VALUE,
+                               &objfile->global_psymbols, CUR_SYMBOL_VALUE,
                                   0, psymtab_language, objfile);
              continue;
 
            case 'p':
            case 'l':
-            case 's':
+           case 's':
              continue;
 
            case ':':
              /* It is a C++ nested symbol.  We don't need to record it
-                (I don't think); if we try to look up foo::bar::baz,
-                then symbols for the symtab containing foo should get
-                read in, I think.  */
+                (I don't think); if we try to look up foo::bar::baz,
+                then symbols for the symtab containing foo should get
+                read in, I think.  */
              /* Someone says sun cc puts out symbols like
-                /foo/baz/maclib::/usr/local/bin/maclib,
-                which would get here with a symbol type of ':'.  */
+                /foo/baz/maclib::/usr/local/bin/maclib,
+                which would get here with a symbol type of ':'.  */
              continue;
 
            default:
              /* Unexpected symbol descriptor.  The second and subsequent stabs
-                of a continued stab can show up here.  The question is
-                whether they ever can mimic a normal stab--it would be
-                nice if not, since we certainly don't want to spend the
-                time searching to the end of every string looking for
-                a backslash.  */
+                of a continued stab can show up here.  The question is
+                whether they ever can mimic a normal stab--it would be
+                nice if not, since we certainly don't want to spend the
+                time searching to the end of every string looking for
+                a backslash.  */
 
              complain (&unknown_symchar_complaint, p[1]);
              continue;
            }
 
        case N_SYM_RBRAC:
-         CUR_SYMBOL_VALUE += ANOFFSET(section_offsets, SECT_OFF_TEXT);
+         CUR_SYMBOL_VALUE += ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
 #ifdef HANDLE_RBRAC
-         HANDLE_RBRAC(CUR_SYMBOL_VALUE);
+         HANDLE_RBRAC (CUR_SYMBOL_VALUE);
          continue;
 #endif
        case N_SYM_LBRAC:
@@ -935,22 +934,22 @@ read_os9k_psymtab (section_offsets, objfile, text_addr, text_size)
   if (DBX_SYMCOUNT (objfile) > 0
 /*FIXME, does this have a bug at start address 0? */
       && last_o_file_start
-      && objfile -> ei.entry_point < bufp->n_value
-      && objfile -> ei.entry_point >= last_o_file_start)
+      && objfile->ei.entry_point < bufp->n_value
+      && objfile->ei.entry_point >= last_o_file_start)
     {
-      objfile -> ei.entry_file_lowpc = last_o_file_start;
-      objfile -> ei.entry_file_highpc = bufp->n_value;
+      objfile->ei.entry_file_lowpc = last_o_file_start;
+      objfile->ei.entry_file_highpc = bufp->n_value;
     }
 
   if (pst)
     {
       os9k_end_psymtab (pst, psymtab_include_list, includes_used,
-                  symnum, end_of_text_addr,
-                  dependency_list, dependencies_used);
+                       symnum, end_of_text_addr,
+                       dependency_list, dependencies_used);
     }
 /*
-  do_cleanups (back_to);
-*/
+   do_cleanups (back_to);
+ */
 }
 
 /* Allocate and partially fill a partial symtab.  It will be
@@ -962,26 +961,20 @@ read_os9k_psymtab (section_offsets, objfile, text_addr, text_size)
 
 
 static struct partial_symtab *
-os9k_start_psymtab (objfile, section_offsets,
-              filename, textlow, ldsymoff,ldsymcnt,  global_syms, static_syms)
-     struct objfile *objfile;
-     struct section_offsets *section_offsets;
-     char *filename;
-     CORE_ADDR textlow;
-     int ldsymoff;
-     int ldsymcnt;
-     struct partial_symbol **global_syms;
-     struct partial_symbol **static_syms;
+os9k_start_psymtab (struct objfile *objfile, char *filename, CORE_ADDR textlow,
+                   int ldsymoff, int ldsymcnt,
+                   struct partial_symbol **global_syms,
+                   struct partial_symbol **static_syms)
 {
   struct partial_symtab *result =
-      start_psymtab_common(objfile, section_offsets,
-                          filename, textlow, global_syms, static_syms);
+  start_psymtab_common (objfile, objfile->section_offsets,
+                       filename, textlow, global_syms, static_syms);
 
   result->read_symtab_private = (char *)
-    obstack_alloc (&objfile -> psymbol_obstack, sizeof (struct symloc));
+    obstack_alloc (&objfile->psymbol_obstack, sizeof (struct symloc));
 
-  LDSYMOFF(result) = ldsymoff;
-  LDSYMCNT(result) = ldsymcnt;
+  LDSYMOFF (result) = ldsymoff;
+  LDSYMCNT (result) = ldsymcnt;
   result->read_symtab = os9k_psymtab_to_symtab;
 
   /* Deduce the source language from the filename for this psymtab. */
@@ -995,7 +988,7 @@ os9k_start_psymtab (objfile, section_offsets,
 
 static struct partial_symtab *
 os9k_end_psymtab (pst, include_list, num_includes, capping_symbol_cnt,
-            capping_text, dependency_list, number_dependencies)
+                 capping_text, dependency_list, number_dependencies)
      struct partial_symtab *pst;
      char **include_list;
      int num_includes;
@@ -1003,14 +996,14 @@ os9k_end_psymtab (pst, include_list, num_includes, capping_symbol_cnt,
      CORE_ADDR capping_text;
      struct partial_symtab **dependency_list;
      int number_dependencies;
-/*     struct partial_symbol *capping_global, *capping_static;*/
+     /* struct partial_symbol *capping_global, *capping_static; */
 {
   int i;
   struct partial_symtab *p1;
-  struct objfile *objfile = pst -> objfile;
+  struct objfile *objfile = pst->objfile;
 
   if (capping_symbol_cnt != -1)
-      LDSYMCNT(pst) = capping_symbol_cnt - LDSYMCNT(pst);
+    LDSYMCNT (pst) = capping_symbol_cnt - LDSYMCNT (pst);
 
   /* Under Solaris, the N_SO symbols always have a value of 0,
      instead of the usual address of the .o file.  Therefore,
@@ -1035,45 +1028,49 @@ os9k_end_psymtab (pst, include_list, num_includes, capping_symbol_cnt,
      down the partial_symtab_list filling in previous texthighs that
      are still unknown.  */
 
-  if (pst->texthigh == 0 && last_function_name) {
-    char *p;
-    int n;
-    struct minimal_symbol *minsym;
-
-    p = strchr (last_function_name, ':');
-    if (p == NULL)
-      p = last_function_name;
-    n = p - last_function_name;
-    p = alloca (n + 1);
-    strncpy (p, last_function_name, n);
-    p[n] = 0;
-    
-    minsym = lookup_minimal_symbol (p, NULL, objfile);
-
-    if (minsym) {
-      pst->texthigh = SYMBOL_VALUE_ADDRESS(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
-        the elf symbol.  Luckily, most of the time no one will notice,
-        since the next file will likely be compiled with -g, so
-        the code below will copy the first fuction's start address 
-        back to our texthigh variable.  (Also, if this file is the
-        last one in a dynamically linked program, texthigh already
-        has the right value.)  If the next file isn't compiled
-        with -g, then the last function in this file winds up owning
-        all of the text space up to the next -g file, or the end (minus
-        shared libraries).  This only matters for single stepping,
-        and even then it will still work, except that it will single
-        step through all of the covered functions, instead of setting
-        breakpoints around them as it usualy does.  This makes it
-        pretty slow, but at least it doesn't fail.
-
-        We can fix this with a fairly big change to bfd, but we need
-        to coordinate better with Cygnus if we want to do that.  FIXME.  */
+  if (pst->texthigh == 0 && last_function_name)
+    {
+      char *p;
+      int n;
+      struct minimal_symbol *minsym;
+
+      p = strchr (last_function_name, ':');
+      if (p == NULL)
+       p = last_function_name;
+      n = p - last_function_name;
+      p = alloca (n + 1);
+      strncpy (p, last_function_name, n);
+      p[n] = 0;
+
+      minsym = lookup_minimal_symbol (p, NULL, objfile);
+
+      if (minsym)
+       {
+         pst->texthigh = SYMBOL_VALUE_ADDRESS (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
+            the elf symbol.  Luckily, most of the time no one will notice,
+            since the next file will likely be compiled with -g, so
+            the code below will copy the first fuction's start address 
+            back to our texthigh variable.  (Also, if this file is the
+            last one in a dynamically linked program, texthigh already
+            has the right value.)  If the next file isn't compiled
+            with -g, then the last function in this file winds up owning
+            all of the text space up to the next -g file, or the end (minus
+            shared libraries).  This only matters for single stepping,
+            and even then it will still work, except that it will single
+            step through all of the covered functions, instead of setting
+            breakpoints around them as it usualy does.  This makes it
+            pretty slow, but at least it doesn't fail.
+
+            We can fix this with a fairly big change to bfd, but we need
+            to coordinate better with Cygnus if we want to do that.  FIXME.  */
+       }
+      last_function_name = NULL;
     }
-    last_function_name = NULL;
-  }
 
   /* this test will be true if the last .o file is only data */
   if (pst->textlow == 0)
@@ -1084,16 +1081,19 @@ os9k_end_psymtab (pst, include_list, num_includes, capping_symbol_cnt,
      address, set it to our starting address.  Take care to not set our
      own ending address to our starting address, nor to set addresses on
      `dependency' files that have both textlow and texthigh zero.  */
-  if (pst->textlow) {
-    ALL_OBJFILE_PSYMTABS (objfile, p1) {
-      if (p1->texthigh == 0  && p1->textlow != 0 && p1 != pst) {
-       p1->texthigh = pst->textlow;
-       /* if this file has only data, then make textlow match texthigh */
-       if (p1->textlow == 0)
-         p1->textlow = p1->texthigh;
+  if (pst->textlow)
+    {
+      ALL_OBJFILE_PSYMTABS (objfile, p1)
+      {
+       if (p1->texthigh == 0 && p1->textlow != 0 && p1 != pst)
+         {
+           p1->texthigh = pst->textlow;
+           /* if this file has only data, then make textlow match texthigh */
+           if (p1->textlow == 0)
+             p1->textlow = p1->texthigh;
+         }
       }
     }
-  }
 
   /* End of kludge for patching Solaris textlow and texthigh.  */
 
@@ -1107,9 +1107,9 @@ os9k_end_psymtab (pst, include_list, num_includes, capping_symbol_cnt,
     {
       pst->dependencies = (struct partial_symtab **)
        obstack_alloc (&objfile->psymbol_obstack,
-                      number_dependencies * sizeof (struct partial_symtab *));
+                   number_dependencies * sizeof (struct partial_symtab *));
       memcpy (pst->dependencies, dependency_list,
-            number_dependencies * sizeof (struct partial_symtab *));
+             number_dependencies * sizeof (struct partial_symtab *));
     }
   else
     pst->dependencies = 0;
@@ -1117,19 +1117,19 @@ os9k_end_psymtab (pst, include_list, num_includes, capping_symbol_cnt,
   for (i = 0; i < num_includes; i++)
     {
       struct partial_symtab *subpst =
-       allocate_psymtab (include_list[i], objfile);
+      allocate_psymtab (include_list[i], objfile);
 
       subpst->section_offsets = pst->section_offsets;
       subpst->read_symtab_private =
-         (char *) obstack_alloc (&objfile->psymbol_obstack,
-                                 sizeof (struct symloc));
-      LDSYMOFF(subpst) =
-       LDSYMCNT(subpst) =
-         subpst->textlow =
-           subpst->texthigh = 0;
+       (char *) obstack_alloc (&objfile->psymbol_obstack,
+                               sizeof (struct symloc));
+      LDSYMOFF (subpst) =
+       LDSYMCNT (subpst) =
+       subpst->textlow =
+       subpst->texthigh = 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 = (struct partial_symtab **)
        obstack_alloc (&objfile->psymbol_obstack,
                       sizeof (struct partial_symtab *));
@@ -1138,8 +1138,8 @@ os9k_end_psymtab (pst, include_list, num_includes, capping_symbol_cnt,
 
       subpst->globals_offset =
        subpst->n_global_syms =
-         subpst->statics_offset =
-           subpst->n_static_syms = 0;
+       subpst->statics_offset =
+       subpst->n_static_syms = 0;
 
       subpst->readin = 0;
       subpst->symtab = 0;
@@ -1155,46 +1155,34 @@ os9k_end_psymtab (pst, include_list, num_includes, capping_symbol_cnt,
   free_named_symtabs (pst->filename);
 
   if (num_includes == 0
-   && number_dependencies == 0
-   && pst->n_global_syms == 0
-   && pst->n_static_syms == 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.  */
-    struct partial_symtab *prev_pst;
-
-    /* First, snip it out of the psymtab chain */
-
-    if (pst->objfile->psymtabs == pst)
-      pst->objfile->psymtabs = pst->next;
-    else
-      for (prev_pst = pst->objfile->psymtabs; prev_pst; prev_pst = pst->next)
-       if (prev_pst->next == pst)
-         prev_pst->next = pst->next;
-
-    /* Next, put it on a free list for recycling */
-    pst->next = pst->objfile->free_psymtabs;
-    pst->objfile->free_psymtabs = pst;
-
-    /* Indicate that psymtab was thrown away.  */
-    pst = (struct partial_symtab *)NULL;
-  }
+      && number_dependencies == 0
+      && pst->n_global_syms == 0
+      && pst->n_static_syms == 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.  */
+      /* Indicate that psymtab was thrown away.  */
+
+      discard_psymtab (pst);
+
+      pst = (struct partial_symtab *) NULL;
+    }
   return pst;
 }
 \f
 static void
-os9k_psymtab_to_symtab_1 (pst)
-     struct partial_symtab *pst;
+os9k_psymtab_to_symtab_1 (struct partial_symtab *pst)
 {
   struct cleanup *old_chain;
   int i;
-  
+
   if (!pst)
     return;
 
   if (pst->readin)
     {
       fprintf_unfiltered (gdb_stderr, "Psymtab for %s already read in.  Shouldn't happen.\n",
-              pst->filename);
+                         pst->filename);
       return;
     }
 
@@ -1210,13 +1198,13 @@ os9k_psymtab_to_symtab_1 (pst)
            fputs_filtered ("and ", gdb_stdout);
            wrap_here ("");
            printf_filtered ("%s...", pst->dependencies[i]->filename);
-           wrap_here ("");             /* Flush output */
+           wrap_here ("");     /* Flush output */
            gdb_flush (gdb_stdout);
          }
        os9k_psymtab_to_symtab_1 (pst->dependencies[i]);
       }
 
-  if (LDSYMCNT(pst))           /* Otherwise it's a dummy */
+  if (LDSYMCNT (pst))          /* Otherwise it's a dummy */
     {
       /* Init stuff necessary for reading in symbols */
       stabsread_init ();
@@ -1236,8 +1224,7 @@ os9k_psymtab_to_symtab_1 (pst)
    Be verbose about it if the user wants that.  */
 
 static void
-os9k_psymtab_to_symtab (pst)
-     struct partial_symtab *pst;
+os9k_psymtab_to_symtab (struct partial_symtab *pst)
 {
   bfd *sym_bfd;
 
@@ -1247,14 +1234,14 @@ os9k_psymtab_to_symtab (pst)
   if (pst->readin)
     {
       fprintf_unfiltered (gdb_stderr, "Psymtab for %s already read in.  Shouldn't happen.\n",
-              pst->filename);
+                         pst->filename);
       return;
     }
 
-  if (LDSYMCNT(pst) || pst->number_of_dependencies)
+  if (LDSYMCNT (pst) || pst->number_of_dependencies)
     {
       /* Print the message now, before reading the string table,
-        to avoid disconcerting pauses.  */
+         to avoid disconcerting pauses.  */
       if (info_verbose)
        {
          printf_filtered ("Reading in symbols for %s...", pst->filename);
@@ -1276,8 +1263,7 @@ os9k_psymtab_to_symtab (pst)
 
 /* Read in a defined section of a specific object file's symbols. */
 static void
-os9k_read_ofile_symtab (pst)
-     struct partial_symtab *pst;
+os9k_read_ofile_symtab (struct partial_symtab *pst)
 {
   register struct internal_symstruct *bufp;
   unsigned char type;
@@ -1287,15 +1273,13 @@ os9k_read_ofile_symtab (pst)
   int sym_offset;              /* Offset to start of symbols to read */
   CORE_ADDR text_offset;       /* Start of text segment for symbols */
   int text_size;               /* Size of text segment for symbols */
-  struct section_offsets *section_offsets;
   FILE *dbg_file;
 
   objfile = pst->objfile;
-  sym_offset = LDSYMOFF(pst);
-  max_symnum = LDSYMCNT(pst);
+  sym_offset = LDSYMOFF (pst);
+  max_symnum = LDSYMCNT (pst);
   text_offset = pst->textlow;
   text_size = pst->texthigh - pst->textlow;
-  section_offsets = pst->section_offsets;
 
   current_objfile = objfile;
   subfile_stack = NULL;
@@ -1310,10 +1294,10 @@ os9k_read_ofile_symtab (pst)
      occurs before the N_SO symbol.
      Detecting this in read_dbx_symtab
      would slow down initial readin, so we look for it here instead. */
-  if (!processing_acc_compilation && sym_offset >= (int)symbol_size)
+  if (!processing_acc_compilation && sym_offset >= (int) symbol_size)
     {
       fseek (objefile->auxf2, sym_offset, SEEK_CUR);
-      fill_sym(objfile->auxf2, abfd);
+      fill_sym (objfile->auxf2, abfd);
       bufp = symbuf;
 
       processing_gcc_compilation = 0;
@@ -1326,7 +1310,7 @@ os9k_read_ofile_symtab (pst)
        }
 
       /* Try to select a C++ demangling based on the compilation unit
-        producer. */
+         producer. */
 
       if (processing_gcc_compilation)
        {
@@ -1339,33 +1323,34 @@ os9k_read_ofile_symtab (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.  */
       bfd_seek (symfile_bfd, sym_offset, SEEK_CUR);
       processing_gcc_compilation = 0;
     }
 #endif /* 0 */
 
-  fseek(dbg_file, (long)sym_offset, 0);
+  fseek (dbg_file, (long) sym_offset, 0);
 /*
-  if (bufp->n_type != (unsigned char)N_SYM_SYM)
-    error("First symbol in segment of executable not a source symbol");
-*/
+   if (bufp->n_type != (unsigned char)N_SYM_SYM)
+   error("First symbol in segment of executable not a source symbol");
+ */
 
   for (symnum = 0; symnum < max_symnum; symnum++)
     {
       QUIT;                    /* Allow this to be interruptable */
-      fill_sym(dbg_file, abfd);
+      fill_sym (dbg_file, abfd);
       bufp = symbuf;
       type = bufp->n_type;
 
-      os9k_process_one_symbol ((int)type, (int)bufp->n_desc, 
-      (CORE_ADDR)bufp->n_value, bufp->n_strx, section_offsets, objfile);
+      os9k_process_one_symbol ((int) type, (int) bufp->n_desc,
+        (CORE_ADDR) bufp->n_value, bufp->n_strx, pst->section_offsets, objfile);
 
       /* We skip checking for a new .o or -l file; that should never
          happen in this routine. */
 #if 0
-      else if (type == N_TEXT)
+      else
+      if (type == N_TEXT)
        {
          /* I don't think this code will ever be executed, because
             the GCC_COMPILED_FLAG_SYMBOL usually is right before
@@ -1383,9 +1368,10 @@ os9k_read_ofile_symtab (pst)
              set_demangling_style (GNU_DEMANGLING_STYLE_STRING);
            }
        }
-      else if (type & N_EXT || type == (unsigned char)N_TEXT
-              || type == (unsigned char)N_NBTEXT
-              ) {
+      else if (type & N_EXT || type == (unsigned char) N_TEXT
+              || type == (unsigned char) N_NBTEXT
+       )
+       {
          /* Global symbol: see if we came across a dbx defintion for
             a corresponding symbol.  If so, store the value.  Remove
             syms from the chain when their values are stored, but
@@ -1396,7 +1382,7 @@ os9k_read_ofile_symtab (pst)
             be satisfied in each file as it appears. So we skip this
             section. */
          ;
-        }
+       }
 #endif /* 0 */
     }
 
@@ -1407,11 +1393,11 @@ os9k_read_ofile_symtab (pst)
      which comes from pst->textlow is correct. */
   if (last_source_start_addr == 0)
     last_source_start_addr = text_offset;
-  pst->symtab = end_symtab (text_offset + text_size, objfile, SECT_OFF_TEXT);
+  pst->symtab = end_symtab (text_offset + text_size, objfile, SECT_OFF_TEXT (objfile));
   end_stabs ();
 }
-
 \f
+
 /* This handles a single symbol from the symbol-file, building symbols
    into a GDB symtab.  It takes these arguments and an implicit argument.
 
@@ -1420,19 +1406,16 @@ os9k_read_ofile_symtab (pst)
    VALU is the value field of the ".stab" entry.
    NAME is the symbol name, in our address space.
    SECTION_OFFSETS is a set of amounts by which the sections of this object
-          file were relocated when it was loaded into memory.
-          All symbols that refer
-         to memory locations need to be offset by these amounts.
+   file were relocated when it was loaded into memory.
+   All symbols that refer
+   to memory locations need to be offset by these amounts.
    OBJFILE is the object file from which we are reading symbols.
-              It is used in end_symtab.  */
+   It is used in end_symtab.  */
 
 static void
-os9k_process_one_symbol (type, desc, valu, name, section_offsets, objfile)
-     int type, desc;
-     CORE_ADDR valu;
-     char *name;
-     struct section_offsets *section_offsets;
-     struct objfile *objfile;
+os9k_process_one_symbol (int type, int desc, CORE_ADDR valu, char *name,
+                        struct section_offsets *section_offsets,
+                        struct objfile *objfile)
 {
   register struct context_stack *new;
   /* The stab type used for the definition of the last function.
@@ -1442,12 +1425,12 @@ os9k_process_one_symbol (type, desc, valu, name, section_offsets, objfile)
 #if 0
   /* Something is wrong if we see real data before
      seeing a source file name.  */
-  if (last_source_file == NULL && type != (unsigned char)N_SO)
+  if (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 (if !IGNORE_SYMBOL (type)),
-        but this should not be an error ().  */
+      /* 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 ().  */
       return;
     }
 #endif /* 0 */
@@ -1456,20 +1439,20 @@ os9k_process_one_symbol (type, desc, valu, name, section_offsets, objfile)
     {
     case N_SYM_LBRAC:
       /* On most machines, the block addresses are relative to the
-        N_SO, the linker did not relocate them (sigh).  */
-      valu += ANOFFSET (section_offsets, SECT_OFF_TEXT); 
+         N_SO, the linker did not relocate them (sigh).  */
+      valu += ANOFFSET (section_offsets, SECT_OFF_TEXT (objfile));
       new = push_context (desc, valu);
       break;
 
     case N_SYM_RBRAC:
-      valu += ANOFFSET (section_offsets, SECT_OFF_TEXT); 
-      new = pop_context();
+      valu += ANOFFSET (section_offsets, SECT_OFF_TEXT (objfile));
+      new = pop_context ();
 
 #if !defined (OS9K_VARIABLES_INSIDE_BLOCK)
 #define OS9K_VARIABLES_INSIDE_BLOCK(desc, gcc_p) 1
 #endif
 
-      if (!OS9K_VARIABLES_INSIDE_BLOCK(desc, processing_gcc_compilation))
+      if (!OS9K_VARIABLES_INSIDE_BLOCK (desc, processing_gcc_compilation))
        local_symbols = new->locals;
 
       if (context_stack_depth > 1)
@@ -1483,7 +1466,7 @@ os9k_process_one_symbol (type, desc, valu, name, section_offsets, objfile)
          if (local_symbols != NULL)
            {
              /* Muzzle a compiler bug that makes end < start.  (which
-                compilers?  Is this ever harmful?).  */
+                compilers?  Is this ever harmful?).  */
              if (new->start_addr > valu)
                {
                  complain (&lbrac_rbrac_complaint);
@@ -1501,23 +1484,26 @@ os9k_process_one_symbol (type, desc, valu, name, section_offsets, objfile)
              within_function = 0;
              /* Make a block for the local symbols within.  */
              finish_block (new->name, &local_symbols, new->old_blocks,
-                       new->start_addr, valu, objfile);
+                           new->start_addr, valu, objfile);
            }
          else
            {
              /* attach local_symbols to the end of new->locals */
-             if (!new->locals) new->locals = local_symbols;
-             else {
-               struct pending *p;
+             if (!new->locals)
+               new->locals = local_symbols;
+             else
+               {
+                 struct pending *p;
 
-               p = new->locals;
-               while (p->next) p = p->next; 
-               p->next = local_symbols;
-             }
+                 p = new->locals;
+                 while (p->next)
+                   p = p->next;
+                 p->next = local_symbols;
+               }
            }
        }
 
-      if (OS9K_VARIABLES_INSIDE_BLOCK(desc, processing_gcc_compilation))
+      if (OS9K_VARIABLES_INSIDE_BLOCK (desc, processing_gcc_compilation))
        /* Now pop locals of block just finished.  */
        local_symbols = new->locals;
       break;
@@ -1525,16 +1511,16 @@ os9k_process_one_symbol (type, desc, valu, name, section_offsets, objfile)
 
     case N_SYM_SLINE:
       /* This type of "symbol" really just records
-        one line-number -- core-address correspondence.
-        Enter it in the line list for this symbol table. */
+         one line-number -- core-address correspondence.
+         Enter it in the line list for this symbol table. */
       /* Relocate for dynamic loading and for ELF acc fn-relative syms.  */
-      valu += ANOFFSET (section_offsets, SECT_OFF_TEXT); 
+      valu += ANOFFSET (section_offsets, SECT_OFF_TEXT (objfile));
       /* FIXME: loses if sizeof (char *) > sizeof (int) */
-      record_line (current_subfile, (int)name, valu);
+      record_line (current_subfile, (int) name, valu);
       break;
 
-    /* The following symbol types need to have the appropriate offset added
-       to their value; then we process symbol definitions in the name.  */
+      /* The following symbol types need to have the appropriate offset added
+         to their value; then we process symbol definitions in the name.  */
     case N_SYM_SYM:
 
       if (name)
@@ -1551,34 +1537,42 @@ os9k_process_one_symbol (type, desc, valu, name, section_offsets, objfile)
          switch (deftype)
            {
            case 'S':
-             valu += ANOFFSET (section_offsets, SECT_OFF_TEXT);
-             n = strrchr(name, '/');
-             if (n != NULL) {
-               *n = '\0';
-               n++;
-               dirn = name;
-             } else {
-               n = name;
-               dirn = NULL;
-             }
+             valu += ANOFFSET (section_offsets, SECT_OFF_TEXT (objfile));
+             n = strrchr (name, '/');
+             if (n != NULL)
+               {
+                 *n = '\0';
+                 n++;
+                 dirn = name;
+               }
+             else
+               {
+                 n = name;
+                 dirn = NULL;
+               }
              *p = '\0';
-             if (symfile_depth++ == 0) {
-               if (last_source_file) {
-                 end_symtab (valu, objfile, SECT_OFF_TEXT);
-                 end_stabs ();
+             if (symfile_depth++ == 0)
+               {
+                 if (last_source_file)
+                   {
+                     end_symtab (valu, objfile, SECT_OFF_TEXT (objfile));
+                     end_stabs ();
+                   }
+                 start_stabs ();
+                 os9k_stabs = 1;
+                 start_symtab (n, dirn, valu);
+                 record_debugformat ("OS9");
+               }
+             else
+               {
+                 push_subfile ();
+                 start_subfile (n, dirn != NULL ? dirn : current_subfile->dirname);
                }
-               start_stabs ();
-               os9k_stabs = 1;
-               start_symtab (n, dirn, valu);
-             } else {
-               push_subfile();
-               start_subfile (n, dirn!=NULL ? dirn : current_subfile->dirname);
-             }
              break;
 
            case 'f':
            case 'F':
-              valu += ANOFFSET (section_offsets, SECT_OFF_TEXT);
+             valu += ANOFFSET (section_offsets, SECT_OFF_TEXT (objfile));
              function_stab_type = type;
 
              within_function = 1;
@@ -1588,7 +1582,7 @@ os9k_process_one_symbol (type, desc, valu, name, section_offsets, objfile)
 
            case 'V':
            case 'v':
-              valu += ANOFFSET (section_offsets, SECT_OFF_DATA);
+             valu += ANOFFSET (section_offsets, SECT_OFF_DATA (objfile));
              define_symbol (valu, name, desc, type, objfile);
              break;
 
@@ -1600,13 +1594,13 @@ os9k_process_one_symbol (type, desc, valu, name, section_offsets, objfile)
       break;
 
     case N_SYM_SE:
-       if (--symfile_depth != 0)
-         start_subfile(pop_subfile(), current_subfile->dirname);
+      if (--symfile_depth != 0)
+       start_subfile (pop_subfile (), current_subfile->dirname);
       break;
 
     default:
       complain (&unknown_symtype_complaint,
-               local_hex_string((unsigned long) type));
+               local_hex_string ((unsigned long) type));
       /* FALLTHROUGH */
       break;
 
@@ -1619,17 +1613,16 @@ os9k_process_one_symbol (type, desc, valu, name, section_offsets, objfile)
 static struct sym_fns os9k_sym_fns =
 {
   bfd_target_os9k_flavour,
-  os9k_new_init,       /* sym_new_init: init anything gbl to entire symtab */
-  os9k_symfile_init,   /* sym_init: read initial info, setup for sym_read() */
-  os9k_symfile_read,   /* sym_read: read a symbol file into symtab */
-  os9k_symfile_finish, /* sym_finish: finished with file, cleanup */
-  default_symfile_offsets,
-                       /* sym_offsets: parse user's offsets to internal form*/
-  NULL                 /* next: pointer to next struct sym_fns */
+  os9k_new_init,               /* sym_new_init: init anything gbl to entire symtab */
+  os9k_symfile_init,           /* sym_init: read initial info, setup for sym_read() */
+  os9k_symfile_read,           /* sym_read: read a symbol file into symtab */
+  os9k_symfile_finish,         /* sym_finish: finished with file, cleanup */
+  default_symfile_offsets,     /* sym_offsets: parse user's offsets to internal form */
+  NULL                         /* next: pointer to next struct sym_fns */
 };
 
 void
-_initialize_os9kread ()
+_initialize_os9kread (void)
 {
-  add_symtab_fns(&os9k_sym_fns);
+  add_symtab_fns (&os9k_sym_fns);
 }