X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=gdb%2Fobjfiles.h;h=b98b7088fe7e3d1f4d660353c2bdfc842619e260;hb=4242ac27a53b03d4cdd4f1da1887ee92fd39befa;hp=a4a1404d5c3f86fbfd400a5f7b56b00b5185aff0;hpb=02b40a193ee4627451f2c525671883ad94f17452;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/objfiles.h b/gdb/objfiles.h index a4a1404d5c..b98b7088fe 100644 --- a/gdb/objfiles.h +++ b/gdb/objfiles.h @@ -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 @@ -156,6 +156,34 @@ struct obj_section { struct objfile *objfile; }; +/* 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, @@ -225,6 +253,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. */ @@ -321,6 +354,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. */