aboutsummaryrefslogtreecommitdiff
path: root/gdb/symmisc.c
diff options
context:
space:
mode:
authorFred Fish <fnf@specifix.com>1996-01-03 22:00:45 +0000
committerFred Fish <fnf@specifix.com>1996-01-03 22:00:45 +0000
commitef4d61874bcff6ef360aebb8e5086840e478ef80 (patch)
treeeda828ca218c34ee10cadd488d81a741d9add0ca /gdb/symmisc.c
parent655492f4ffba8b174b3b504545e2a4e1f541bb73 (diff)
downloadgdb-ef4d61874bcff6ef360aebb8e5086840e478ef80.zip
gdb-ef4d61874bcff6ef360aebb8e5086840e478ef80.tar.gz
gdb-ef4d61874bcff6ef360aebb8e5086840e478ef80.tar.bz2
* symmisc.c (print_objfile_statistics): Print memory use statistics
for objfile psymbol, symbol, and type obstacks. Update copyright to 1996.
Diffstat (limited to 'gdb/symmisc.c')
-rw-r--r--gdb/symmisc.c57
1 files changed, 51 insertions, 6 deletions
diff --git a/gdb/symmisc.c b/gdb/symmisc.c
index e9af39f..d4b3d68 100644
--- a/gdb/symmisc.c
+++ b/gdb/symmisc.c
@@ -1,5 +1,5 @@
/* Do various things to symbol tables (other than lookup), for GDB.
- Copyright 1986, 1987, 1989, 1991, 1992, 1993, 1994
+ Copyright 1986, 1987, 1989, 1991, 1992, 1993, 1994, 1995, 1996
Free Software Foundation, Inc.
This file is part of GDB.
@@ -16,7 +16,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. */
#include "defs.h"
#include "symtab.h"
@@ -152,6 +152,43 @@ free_symtab (s)
#if MAINTENANCE_CMDS
+void
+print_objfile_statistics ()
+{
+ struct objfile *objfile;
+
+ immediate_quit++;
+ ALL_OBJFILES (objfile)
+ {
+ printf_filtered ("Statistics for '%s':\n", objfile -> name);
+ if (OBJSTAT (objfile, n_stabs) > 0)
+ printf_filtered (" Number of \"stab\" symbols read: %d\n",
+ OBJSTAT (objfile, n_stabs));
+ if (OBJSTAT (objfile, n_minsyms) > 0)
+ printf_filtered (" Number of \"minimal symbols read: %d\n",
+ OBJSTAT (objfile, n_minsyms));
+ if (OBJSTAT (objfile, n_psyms) > 0)
+ printf_filtered (" Number of \"partial symbols read: %d\n",
+ OBJSTAT (objfile, n_psyms));
+ if (OBJSTAT (objfile, n_syms) > 0)
+ printf_filtered (" Number of \"full symbols read: %d\n",
+ OBJSTAT (objfile, n_syms));
+ if (OBJSTAT (objfile, n_types) > 0)
+ printf_filtered (" Number of \"types defined: %d\n",
+ OBJSTAT (objfile, n_types));
+ if (OBJSTAT (objfile, sz_strtab) > 0)
+ printf_filtered (" Space used by a.out string tables: %d\n",
+ OBJSTAT (objfile, sz_strtab));
+ printf_filtered (" Total memory used for psymbol obstack: %d\n",
+ obstack_memory_used (&objfile -> psymbol_obstack));
+ printf_filtered (" Total memory used for symbol obstack: %d\n",
+ obstack_memory_used (&objfile -> symbol_obstack));
+ printf_filtered (" Total memory used for type obstack: %d\n",
+ obstack_memory_used (&objfile -> type_obstack));
+ }
+ immediate_quit--;
+}
+
static void
dump_objfile (objfile)
struct objfile *objfile;
@@ -546,13 +583,14 @@ print_symbol (args)
break;
case LOC_CONST_BYTES:
- fprintf_filtered (outfile, "const %u hex bytes:",
- TYPE_LENGTH (SYMBOL_TYPE (symbol)));
{
unsigned i;
- for (i = 0; i < TYPE_LENGTH (SYMBOL_TYPE (symbol)); i++)
+ struct type *type = check_typedef (SYMBOL_TYPE (symbol));
+ fprintf_filtered (outfile, "const %u hex bytes:",
+ TYPE_LENGTH (type));
+ for (i = 0; i < TYPE_LENGTH (type); i++)
fprintf_filtered (outfile, " %02x",
- (unsigned)SYMBOL_VALUE_BYTES (symbol) [i]);
+ (unsigned)SYMBOL_VALUE_BYTES (symbol) [i]);
fprintf_filtered (outfile, ",");
}
break;
@@ -622,6 +660,10 @@ print_symbol (args)
fprintf_filtered (outfile, ",");
break;
+ case LOC_UNRESOLVED:
+ fprintf_filtered (outfile, "unresolved");
+ break;
+
case LOC_OPTIMIZED_OUT:
fprintf_filtered (outfile, "optimized out");
break;
@@ -766,6 +808,9 @@ print_partial_symbol (p, count, what, outfile)
case LOC_LOCAL_ARG:
fputs_filtered ("shuffled arg", outfile);
break;
+ case LOC_UNRESOLVED:
+ fputs_filtered ("unresolved", outfile);
+ break;
case LOC_OPTIMIZED_OUT:
fputs_filtered ("optimized out", outfile);
break;