* gdb.base/display.c (do_loops): Add float variable `f'.
[deliverable/binutils-gdb.git] / gdb / hp-psymtab-read.c
index d3d0ff2eeff24af491f2f71210babc06cf3d873d..ad001d300d65b19c4a5f300a1889d8e389d5dd49 100644 (file)
@@ -1,5 +1,5 @@
 /* Read hp debug symbols and convert to internal format, for GDB.
-   Copyright 1993, 1996, 1998, 1999 Free Software Foundation, Inc.
+   Copyright 1993, 1996, 1998, 1999, 2000 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
 
 /* Forward procedure declarations */
 
-void hpread_symfile_init
-  PARAMS ((struct objfile *));
+void hpread_symfile_init (struct objfile *);
 
-void
-do_pxdb PARAMS ((bfd *));
+void do_pxdb (bfd *);
 
-void hpread_build_psymtabs
-  PARAMS ((struct objfile *, int));
+void hpread_build_psymtabs (struct objfile *, int);
 
-void hpread_symfile_finish
-  PARAMS ((struct objfile *));
+void hpread_symfile_finish (struct objfile *);
 
-static union dnttentry *hpread_get_gntt
-  PARAMS ((int, struct objfile *));
+static union dnttentry *hpread_get_gntt (int, struct objfile *);
 
-static unsigned long hpread_get_textlow
-  PARAMS ((int, int, struct objfile *, int));
+static unsigned long hpread_get_textlow (int, int, struct objfile *, int);
 
 static struct partial_symtab *hpread_start_psymtab
-  PARAMS ((struct objfile *, char *, CORE_ADDR, int,
-          struct partial_symbol **, struct partial_symbol **));
+  (struct objfile *, char *, CORE_ADDR, int,
+   struct partial_symbol **, struct partial_symbol **);
 
 static struct partial_symtab *hpread_end_psymtab
-  PARAMS ((struct partial_symtab *, char **, int, int, CORE_ADDR,
-          struct partial_symtab **, int));
+  (struct partial_symtab *, char **, int, int, CORE_ADDR,
+   struct partial_symtab **, int);
 
 /* End of forward routine declarations */
 
@@ -76,10 +70,9 @@ static struct partial_symtab *hpread_end_psymtab
 #include <stdlib.h>
 #include <string.h>
 
-/* check for the existance of a file, given its full pathname */
+/* check for the existence of a file, given its full pathname */
 int
-file_exists (filename)
-     char *filename;
+file_exists (char *filename)
 {
   if (filename)
     return (access (filename, F_OK) == 0);
@@ -90,8 +83,7 @@ file_exists (filename)
 /* Translate from the "hp_language" enumeration in hp-symtab.h
    used in the debug info to gdb's generic enumeration in defs.h. */
 static enum language
-trans_lang (in_lang)
-     enum hp_language in_lang;
+trans_lang (enum hp_language in_lang)
 {
   if (in_lang == HP_LANGUAGE_C)
     return language_c;
@@ -111,15 +103,14 @@ static char main_string[] = "main";
 /* Call PXDB to process our file.
 
    Approach copied from DDE's "dbgk_run_pxdb".  Note: we
-   don't check for BSD location of pxdb, nor for existance
+   don't check for BSD location of pxdb, nor for existence
    of pxdb itself, etc.
 
    NOTE: uses system function and string functions directly.
 
    Return value: 1 if ok, 0 if not */
 int
-hpread_call_pxdb (file_name)
-     char *file_name;
+hpread_call_pxdb (char *file_name)
 {
   char *p;
   int status;
@@ -127,7 +118,7 @@ hpread_call_pxdb (file_name)
 
   if (file_exists (PXDB_SVR4))
     {
-      p = malloc (strlen (PXDB_SVR4) + strlen (file_name) + 2);
+      p = xmalloc (strlen (PXDB_SVR4) + strlen (file_name) + 2);
       strcpy (p, PXDB_SVR4);
       strcat (p, " ");
       strcat (p, file_name);
@@ -152,8 +143,7 @@ hpread_call_pxdb (file_name)
    and the file therefore needs to be re-loaded.  Otherwise
    return 0. */
 int
-hpread_pxdb_needed (sym_bfd)
-     bfd *sym_bfd;
+hpread_pxdb_needed (bfd *sym_bfd)
 {
   asection *pinfo_section, *debug_section, *header_section;
   unsigned int do_pxdb;
@@ -283,8 +273,7 @@ hpread_pxdb_needed (sym_bfd)
    If so, call pxdb. */
 
 void
-do_pxdb (sym_bfd)
-     bfd *sym_bfd;
+do_pxdb (bfd *sym_bfd)
 {
   /* The following code is HP-specific.  The "right" way of
      doing this is unknown, but we bet would involve a target-
@@ -379,7 +368,7 @@ static boolean told_objfile = 0;
 
 /* Set up psymtab symbol index stuff */
 static void
-init_pst_syms ()
+init_pst_syms (void)
 {
   pst_syms_count = 0;
   pst_syms_size = 20;
@@ -388,19 +377,17 @@ init_pst_syms ()
 
 /* Clean up psymtab symbol index stuff */
 static void
-clear_pst_syms ()
+clear_pst_syms (void)
 {
   pst_syms_count = 0;
   pst_syms_size = 0;
-  free (pst_syms_array);
+  xfree (pst_syms_array);
   pst_syms_array = 0;
 }
 
 /* Add information about latest psymtab to symbol index table */
 static void
-record_pst_syms (start_sym, end_sym)
-     int start_sym;
-     int end_sym;
+record_pst_syms (int start_sym, int end_sym)
 {
   if (++pst_syms_count > pst_syms_size)
     {
@@ -422,8 +409,7 @@ record_pst_syms (start_sym, end_sym)
 
    Return 0 => not found */
 static int
-find_next_pst_start (index)
-     int index;
+find_next_pst_start (int index)
 {
   int i;
 
@@ -448,11 +434,8 @@ find_next_pst_start (index)
 
    Return 0 => not found */
 static int
-find_next_file_isym (index, qFD, curr_fd, pxdb_header_p)
-     int index;
-     quick_file_entry *qFD;
-     int curr_fd;
-     PXDB_header_ptr pxdb_header_p;
+find_next_file_isym (int index, quick_file_entry *qFD, int curr_fd,
+                    PXDB_header_ptr pxdb_header_p)
 {
   while (VALID_CURR_FILE)
     {
@@ -470,11 +453,8 @@ find_next_file_isym (index, qFD, curr_fd, pxdb_header_p)
 
    Return 0 => not found */
 static int
-find_next_proc_isym (index, qPD, curr_pd, pxdb_header_p)
-     int index;
-     quick_procedure_entry *qPD;
-     int curr_pd;
-     PXDB_header_ptr pxdb_header_p;
+find_next_proc_isym (int index, quick_procedure_entry *qPD, int curr_pd,
+                    PXDB_header_ptr pxdb_header_p)
 {
   while (VALID_CURR_PROC)
     {
@@ -492,11 +472,8 @@ find_next_proc_isym (index, qPD, curr_pd, pxdb_header_p)
 
    Return 0 => not found */
 static int
-find_next_module_isym (index, qMD, curr_md, pxdb_header_p)
-     int index;
-     quick_module_entry *qMD;
-     int curr_md;
-     PXDB_header_ptr pxdb_header_p;
+find_next_module_isym (int index, quick_module_entry *qMD, int curr_md,
+                      PXDB_header_ptr pxdb_header_p)
 {
   while (VALID_CURR_MODULE)
     {
@@ -511,20 +488,23 @@ find_next_module_isym (index, qMD, curr_md, pxdb_header_p)
    pointed to by CURR_PD_P, and between code addresses START_ADR and END_ADR.
    Other parameters are explained in comments below. */
 
-/* This used to be inline in hpread_quick_traverse, but now that we do essentially the
-   same thing for two different cases (modules and module-less files), it's better
-   organized in a separate routine, although it does take lots of arguments. pai/1997-10-08 */
+/* This used to be inline in hpread_quick_traverse, but now that we do
+   essentially the same thing for two different cases (modules and
+   module-less files), it's better organized in a separate routine,
+   although it does take lots of arguments.  pai/1997-10-08
+   
+   CURR_PD_P is the pointer to the current proc index. QPD is the
+   procedure quick lookup table.  MAX_PROCS is the number of entries
+   in the proc. table.  START_ADR is the beginning of the code range
+   for the current psymtab.  end_adr is the end of the code range for
+   the current psymtab.  PST is the current psymtab.  VT_bits is
+   a pointer to the strings table of SOM debug space.  OBJFILE is
+   the current object file. */
 
 static int
-scan_procs (curr_pd_p, qPD, max_procs, start_adr, end_adr, pst, vt_bits, objfile)
-     int *curr_pd_p;           /* pointer to current proc index */
-     quick_procedure_entry *qPD;       /* the procedure quick lookup table */
-     int max_procs;            /* number of entries in proc. table */
-     CORE_ADDR start_adr;      /* beginning of code range for current psymtab */
-     CORE_ADDR end_adr;                /* end of code range for current psymtab */
-     struct partial_symtab *pst;       /* current psymtab */
-     char *vt_bits;            /* strings table of SOM debug space */
-     struct objfile *objfile;  /* current object file */
+scan_procs (int *curr_pd_p, quick_procedure_entry *qPD, int max_procs,
+           CORE_ADDR start_adr, CORE_ADDR end_adr, struct partial_symtab *pst,
+           char *vt_bits, struct objfile *objfile)
 {
   union dnttentry *dn_bufp;
   int symbol_count = 0;                /* Total number of symbols in this psymtab */
@@ -601,7 +581,7 @@ scan_procs (curr_pd_p, qPD, max_procs, start_adr, end_adr, pst, vt_bits, objfile
                                           LOC_BLOCK,   /* "I am a routine"        */
                                           &objfile->global_psymbols,
                                           (qPD[curr_pd].adrStart +     /* Starting address of rtn */
-                                ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT)),
+                                ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile))),
                                           0,   /* core addr?? */
                      trans_lang ((enum hp_language) qPD[curr_pd].language),
                                           objfile);
@@ -614,7 +594,7 @@ scan_procs (curr_pd_p, qPD, max_procs, start_adr, end_adr, pst, vt_bits, objfile
                                           LOC_BLOCK,   /* "I am a routine"        */
                                           &objfile->static_psymbols,
                                           (qPD[curr_pd].adrStart +     /* Starting address of rtn */
-                                ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT)),
+                                ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile))),
                                           0,   /* core addr?? */
                      trans_lang ((enum hp_language) qPD[curr_pd].language),
                                           objfile);
@@ -646,11 +626,8 @@ scan_procs (curr_pd_p, qPD, max_procs, start_adr, end_adr, pst, vt_bits, objfile
    entry for it, so in such cases we create a psymtab for the file.  */
 
 int
-hpread_quick_traverse (objfile, gntt_bits, vt_bits, pxdb_header_p)
-     struct objfile *objfile;  /* The object file descriptor */
-     char *gntt_bits;          /* GNTT entries, loaded in from the file */
-     char *vt_bits;            /* VT (string) entries ditto. */
-     PXDB_header_ptr pxdb_header_p;    /* Pointer to pxdb header ditto */
+hpread_quick_traverse (struct objfile *objfile, char *gntt_bits,
+                      char *vt_bits, PXDB_header_ptr pxdb_header_p)
 {
   struct partial_symtab *pst;
 
@@ -969,7 +946,7 @@ hpread_quick_traverse (objfile, gntt_bits, vt_bits, pxdb_header_p)
                                          static_syms);
 
              /* Set up to only enter each class referenced in this module once.  */
-             class_entered = malloc (B_BYTES (pxdb_header_p->cd_entries));
+             class_entered = xmalloc (B_BYTES (pxdb_header_p->cd_entries));
              B_CLRALL (class_entered, pxdb_header_p->cd_entries);
 
              /* Scan the procedure descriptors for procedures in the current
@@ -1048,7 +1025,7 @@ hpread_quick_traverse (objfile, gntt_bits, vt_bits, pxdb_header_p)
              /* Prepare for the next psymtab. */
              global_syms = objfile->global_psymbols.next;
              static_syms = objfile->static_psymbols.next;
-             free (class_entered);
+             xfree (class_entered);
 
              curr_fd++;
            }                   /* Psymtab for file */
@@ -1197,7 +1174,7 @@ hpread_quick_traverse (objfile, gntt_bits, vt_bits, pxdb_header_p)
                                          static_syms);
 
              /* Set up to only enter each class referenced in this module once.  */
-             class_entered = malloc (B_BYTES (pxdb_header_p->cd_entries));
+             class_entered = xmalloc (B_BYTES (pxdb_header_p->cd_entries));
              B_CLRALL (class_entered, pxdb_header_p->cd_entries);
 
              /* Scan the procedure descriptors for procedures in the current
@@ -1277,7 +1254,7 @@ hpread_quick_traverse (objfile, gntt_bits, vt_bits, pxdb_header_p)
              /* Prepare for the next psymtab. */
              global_syms = objfile->global_psymbols.next;
              static_syms = objfile->static_psymbols.next;
-             free (class_entered);
+             xfree (class_entered);
 
              curr_md++;
              curr_fd++;
@@ -1354,9 +1331,7 @@ hpread_quick_traverse (objfile, gntt_bits, vt_bits, pxdb_header_p)
 /* Get appropriate header, based on pxdb type. 
    Return value: 1 if ok, 0 if not */
 int
-hpread_get_header (objfile, pxdb_header_p)
-     struct objfile *objfile;
-     PXDB_header_ptr pxdb_header_p;
+hpread_get_header (struct objfile *objfile, PXDB_header_ptr pxdb_header_p)
 {
   asection *pinfo_section, *debug_section, *header_section;
 
@@ -1474,8 +1449,7 @@ hpread_get_header (objfile, pxdb_header_p)
    FIXME, there should be a cleaner peephole into the BFD environment
    here. */
 void
-hpread_symfile_init (objfile)
-     struct objfile *objfile;
+hpread_symfile_init (struct objfile *objfile)
 {
   asection *vt_section, *slt_section, *lntt_section, *gntt_section;
 
@@ -1572,9 +1546,7 @@ hpread_symfile_init (objfile)
    opposed to a shared lib or dynamically loaded file). */
 
 void
-hpread_build_psymtabs (objfile, mainline)
-     struct objfile *objfile;
-     int mainline;
+hpread_build_psymtabs (struct objfile *objfile, int mainline)
 {
 
 #ifdef DUMPING
@@ -1628,7 +1600,7 @@ hpread_build_psymtabs (objfile, mainline)
     (struct partial_symtab **) alloca (dependencies_allocated *
                                       sizeof (struct partial_symtab *));
 
-  old_chain = make_cleanup ((make_cleanup_func) free_objfile, objfile);
+  old_chain = make_cleanup_free_objfile (objfile);
 
   last_source_file = 0;
 
@@ -1816,7 +1788,7 @@ hpread_build_psymtabs (objfile, mainline)
                  past_first_source_file = 1;
 
                valu = hpread_get_textlow (i, hp_symnum, objfile, symcount);
-               valu += ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT);
+               valu += ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
                pst = hpread_start_psymtab (objfile,
                                            namestring, valu,
                                            (hp_symnum
@@ -1850,7 +1822,7 @@ hpread_build_psymtabs (objfile, mainline)
              /* Now begin a new module and a new psymtab for it */
              SET_NAMESTRING (dn_bufp, &namestring, objfile);
              valu = hpread_get_textlow (i, hp_symnum, objfile, symcount);
-             valu += ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT);
+             valu += ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
              if (!pst)
                {
                  pst = hpread_start_psymtab (objfile,
@@ -1869,11 +1841,11 @@ hpread_build_psymtabs (objfile, mainline)
              /* The beginning of a function.  DNTT_TYPE_ENTRY may also denote
                 a secondary entry point.  */
              valu = dn_bufp->dfunc.hiaddr + ANOFFSET (objfile->section_offsets,
-                                                      SECT_OFF_TEXT);
+                                                      SECT_OFF_TEXT (objfile));
              if (valu > texthigh)
                texthigh = valu;
              valu = dn_bufp->dfunc.lowaddr +
-               ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT);
+               ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
              SET_NAMESTRING (dn_bufp, &namestring, objfile);
              if (dn_bufp->dfunc.global)
                add_psymbol_to_list (namestring, strlen (namestring),
@@ -1890,11 +1862,11 @@ hpread_build_psymtabs (objfile, mainline)
 
            case DNTT_TYPE_DOC_FUNCTION:
              valu = dn_bufp->ddocfunc.hiaddr + ANOFFSET (objfile->section_offsets,
-                                                         SECT_OFF_TEXT);
+                                                         SECT_OFF_TEXT (objfile));
              if (valu > texthigh)
                texthigh = valu;
              valu = dn_bufp->ddocfunc.lowaddr +
-               ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT);
+               ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
              SET_NAMESTRING (dn_bufp, &namestring, objfile);
              if (dn_bufp->ddocfunc.global)
                add_psymbol_to_list (namestring, strlen (namestring),
@@ -1984,7 +1956,7 @@ hpread_build_psymtabs (objfile, mainline)
                valu = dn_bufp->dsvar.location;
                /* Relocate in case it's in a shared library */
                if (storage == LOC_STATIC)
-                 valu += ANOFFSET (objfile->section_offsets, SECT_OFF_DATA);
+                 valu += ANOFFSET (objfile->section_offsets, SECT_OFF_DATA (objfile));
 
                /* Luckily, dvar, svar, typedef, and tagdef all
                   have their "global" bit in the same place, so it works
@@ -2097,8 +2069,7 @@ hpread_build_psymtabs (objfile, mainline)
    objfile struct from the global list of known objfiles. */
 
 void
-hpread_symfile_finish (objfile)
-     struct objfile *objfile;
+hpread_symfile_finish (struct objfile *objfile)
 {
   if (objfile->sym_private != NULL)
     {
@@ -2112,42 +2083,33 @@ hpread_symfile_finish (objfile)
 /* Various small functions to get entries in the debug symbol sections.  */
 
 union dnttentry *
-hpread_get_lntt (index, objfile)
-     int index;
-     struct objfile *objfile;
+hpread_get_lntt (int index, struct objfile *objfile)
 {
   return (union dnttentry *)
     &(LNTT (objfile)[(index * sizeof (struct dntt_type_block))]);
 }
 
 static union dnttentry *
-hpread_get_gntt (index, objfile)
-     int index;
-     struct objfile *objfile;
+hpread_get_gntt (int index, struct objfile *objfile)
 {
   return (union dnttentry *)
     &(GNTT (objfile)[(index * sizeof (struct dntt_type_block))]);
 }
 
 union sltentry *
-hpread_get_slt (index, objfile)
-     int index;
-     struct objfile *objfile;
+hpread_get_slt (int index, struct objfile *objfile)
 {
   return (union sltentry *) &(SLT (objfile)[index * sizeof (union sltentry)]);
 }
 
 /* Get the low address associated with some symbol (typically the start
    of a particular source file or module).  Since that information is not
-   stored as part of the DNTT_TYPE_MODULE or DNTT_TYPE_SRCFILE symbol we must infer it from
-   the existance of DNTT_TYPE_FUNCTION symbols.  */
+   stored as part of the DNTT_TYPE_MODULE or DNTT_TYPE_SRCFILE symbol we
+   must infer it from the existence of DNTT_TYPE_FUNCTION symbols.  */
 
 static unsigned long
-hpread_get_textlow (global, index, objfile, symcount)
-     int global;
-     int index;
-     struct objfile *objfile;
-     int symcount;
+hpread_get_textlow (int global, int index, struct objfile *objfile,
+                   int symcount)
 {
   union dnttentry *dn_bufp;
   struct minimal_symbol *msymbol;
@@ -2199,16 +2161,12 @@ hpread_get_textlow (global, index, objfile, symcount)
    (normal). */
 
 static struct partial_symtab *
-hpread_start_psymtab (objfile,
-                     filename, textlow, ldsymoff, global_syms, static_syms)
-     struct objfile *objfile;
-     char *filename;
-     CORE_ADDR textlow;
-     int ldsymoff;
-     struct partial_symbol **global_syms;
-     struct partial_symbol **static_syms;
+hpread_start_psymtab (struct objfile *objfile, char *filename,
+                     CORE_ADDR textlow, int ldsymoff,
+                     struct partial_symbol **global_syms,
+                     struct partial_symbol **static_syms)
 {
-  int offset = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT);
+  int offset = ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));
   extern void hpread_psymtab_to_symtab ();
   struct partial_symtab *result =
   start_psymtab_common (objfile, objfile->section_offsets,
@@ -2234,19 +2192,15 @@ hpread_start_psymtab (objfile,
    FIXME:  List variables and peculiarities of same.  */
 
 static struct partial_symtab *
-hpread_end_psymtab (pst, include_list, num_includes, capping_symbol_offset,
-                   capping_text, dependency_list, number_dependencies)
-     struct partial_symtab *pst;
-     char **include_list;
-     int num_includes;
-     int capping_symbol_offset;
-     CORE_ADDR capping_text;
-     struct partial_symtab **dependency_list;
-     int number_dependencies;
+hpread_end_psymtab (struct partial_symtab *pst, char **include_list,
+                   int num_includes, int capping_symbol_offset,
+                   CORE_ADDR capping_text,
+                   struct partial_symtab **dependency_list,
+                   int number_dependencies)
 {
   int i;
   struct objfile *objfile = pst->objfile;
-  int offset = ANOFFSET (pst->section_offsets, SECT_OFF_TEXT);
+  int offset = ANOFFSET (pst->section_offsets, SECT_OFF_TEXT (objfile));
 
 #ifdef DUMPING
   /* Turn on to see what kind of a psymtab we've built. */
This page took 0.030094 seconds and 4 git commands to generate.