Fri Sep 4 13:57:43 1998 Jakub Jelinek <jj@sunsite.ms.mff.cuni.cz>
[deliverable/binutils-gdb.git] / gdb / objfiles.h
index 2add5209d32a528181636b29f3c753b0114cda2f..d90095dd3efad5b20ea0836cf87f0de785098e32 100644 (file)
@@ -1,5 +1,5 @@
 /* Definitions for symbol file management in GDB.
-   Copyright (C) 1992, 1993, 1994 Free Software Foundation, Inc.
+   Copyright (C) 1992, 1993, 1994, 1995 Free Software Foundation, Inc.
 
 This file is part of GDB.
 
@@ -15,7 +15,7 @@ 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., 675 Mass Ave, Cambridge, MA 02139, USA.  */
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 #if !defined (OBJFILES_H)
 #define OBJFILES_H
@@ -154,8 +154,39 @@ struct obj_section {
 
   /* Objfile this section is part of.  */
   struct objfile *objfile;
+
+  /* True if this "overlay section" is mapped into an "overlay region". */
+  int ovly_mapped;
+};
+
+/* The "objstats" structure provides a place for gdb to record some
+   interesting information about its internal state at runtime, on a
+   per objfile basis, such as information about the number of symbols
+   read, size of string table (if any), etc. */
+
+#if MAINTENANCE_CMDS
+
+struct objstats {
+  int n_minsyms;       /* Number of minimal symbols read */
+  int n_psyms;         /* Number of partial symbols read */
+  int n_syms;          /* Number of full symbols read */
+  int n_stabs;         /* Number of ".stabs" read (if applicable) */
+  int n_types;         /* Number of types */
+  int sz_strtab;       /* Size of stringtable, (if applicable) */
 };
 
+#define OBJSTAT(objfile, expr) (objfile -> stats.expr)
+#define OBJSTATS struct objstats stats
+extern void print_objfile_statistics PARAMS ((void));
+extern void print_symbol_bcache_statistics PARAMS ((void));
+
+#else
+
+#define OBJSTAT(objfile, expr) /* Nothing */
+#define OBJSTATS               /* Nothing */
+
+#endif /* MAINTENANCE_CMDS */
+
 /* Master structure for keeping track of each file from which
    gdb reads symbols.  There are several ways these get allocated: 1.
    The main symbol file, symfile_objfile, set by the symbol-file command,
@@ -208,8 +239,8 @@ struct objfile
 
   struct partial_symtab *free_psymtabs;
 
-  /* The object file's BFD.  Can be null, in which case bfd_open (name) and
-     put the result here.  */
+  /* The object file's BFD.  Can be null if the objfile contains only
+     minimal symbols, e.g. the run time common symbols for SunOS4.  */
 
   bfd *obfd;
 
@@ -225,6 +256,11 @@ struct objfile
   struct obstack symbol_obstack;       /* Full symbols */
   struct obstack type_obstack;         /* Types */
 
+  /* A byte cache where we can stash arbitrary "chunks" of bytes that
+     will not change. */
+
+  struct bcache psymbol_cache;         /* Byte cache for partial syms */
+
   /* Vectors of all partial symbols read in from file.  The actual data
      is stored in the psymbol_obstack. */
 
@@ -283,7 +319,7 @@ struct objfile
   /* Information about stabs.  Will be filled in with a dbx_symfile_info
      struct by those readers that need it. */
 
-  PTR sym_stab_info;
+  struct dbx_symfile_info *sym_stab_info;
 
   /* Hook for information for use by the symbol reader (currently used
      for information shared by sym_init and sym_read).  It is
@@ -321,6 +357,9 @@ struct objfile
 
   /* two auxiliary fields, used to hold the fp of separate symbol files */
   FILE *auxf1, *auxf2;
+
+  /* Place to stash various statistics about this objfile */
+  OBJSTATS;
 };
 
 /* Defines for the objfile flag word. */
@@ -356,6 +395,11 @@ struct objfile
 
 extern struct objfile *symfile_objfile;
 
+/* The object file that contains the runtime common minimal symbols
+   for SunOS4. Note that this objfile has no associated BFD.  */
+
+extern struct objfile *rt_common_objfile;
+
 /* When we need to allocate a new type, we need to know which type_obstack
    to allocate the type on, since there is one for each objfile.  The places
    where types are allocated are deeply buried in function call hierarchies
@@ -384,6 +428,8 @@ allocate_objfile PARAMS ((bfd *, int));
 extern int
 build_objfile_section_table PARAMS ((struct objfile *));
 
+extern void objfile_to_front PARAMS ((struct objfile *));
+
 extern void
 unlink_objfile PARAMS ((struct objfile *));
 
@@ -411,6 +457,12 @@ have_minimal_symbols PARAMS ((void));
 extern struct obj_section *
 find_pc_section PARAMS((CORE_ADDR pc));
 
+extern struct obj_section *
+find_pc_sect_section PARAMS((CORE_ADDR pc, asection *section));
+
+extern int
+in_plt_section PARAMS ((CORE_ADDR, char *));
+
 /* Traverse all object files.  ALL_OBJFILES_SAFE works even if you delete
    the objfile during the traversal.  */
 
@@ -456,4 +508,11 @@ find_pc_section PARAMS((CORE_ADDR pc));
     if ((objfile)->msymbols)    \
       ALL_OBJFILE_MSYMBOLS (objfile, m)
 
+#define ALL_OBJFILE_OSECTIONS(objfile, osect)  \
+  for (osect = objfile->sections; osect < objfile->sections_end; osect++)
+
+#define ALL_OBJSECTIONS(objfile, osect)                \
+  ALL_OBJFILES (objfile)                       \
+    ALL_OBJFILE_OSECTIONS (objfile, osect)
+
 #endif /* !defined (OBJFILES_H) */
This page took 0.025534 seconds and 4 git commands to generate.