* maint.c: New file.
authorFred Fish <fnf@specifix.com>
Mon, 6 Jul 1992 00:22:57 +0000 (00:22 +0000)
committerFred Fish <fnf@specifix.com>
Mon, 6 Jul 1992 00:22:57 +0000 (00:22 +0000)
* Makefile.in (SFILES_MAINDIR):  Add new file maint.c.
* Makefile.in (OBS):  Add new file maint.o.
* defs.h (command_class):  Add class_maintenance.
* defs.h (MAINTENANCE_CMDS):  Default to including maintenance
commands.  Allow for them (and other nonessential parts of gdb)
to be selectively left out under special circumstances.
* gdbtypes.c (recursive_dump_type):  New function; supports
maintenance print-type command.
* gdbtypes.h (recursive_dump_type, maintenance_print_type):
Add prototypes.
* main.c (maintenancelist, maintenanceinfolist):  Add maintenance
command lists.
* main.c (initialize_cmd_lists):  Eliminate unnecessary casts on
initializers.  Add initializations for setprintlist, showprintlist,
setchecklist, showchecklist, maintenancelist, and maintenanceinfolist.
* printcmd.c (maintenance_print_type):  New maintenance cmd.
* valprint.c (setprintlist, showprintlist):  Move to main.c, as
implied by comment that all cmd lists are owned by main.c.
* infcmd.c (unsetlist):  Move to main.c, as implied by comment
that all cmd lists are owned by main.c.
* language.c (setchecklist, showchecklist):  Move to main.c, as
implied by comment that all cmd lists are owned by main.c
* breakpoint.c (enablelist, enablebreaklist, disablelist, cmdlist,
deletelist):  Remove redundant declarations (also in gdbcmd.h).
* symmisc.c (printsyms_command):  Now maintenance_print_symbols.
* symmisc.c (printmsyms_command):  Now maintenance_print_msymbols.
* symmisc.c (printpsyms_command):  Now maintenance_print_psymbols.
* symmisc.c (printobjfiles_command):  Now maintenance_print_objfiles.
* symtab.h (maintenance_print_symbols, maintenance_print_psymbols,
maintenance_print_msymbols, maintenance_print_objfiles):
Add prototypes.
* symmisc.c (printsyms_command, printpsyms_command,
printmsyms_command, printobjfiles_command):  Removed from
_initialize_symmisc.
* main.c (dump_me_command):  Moved to maint.c and renamed to
maintenance_dump_me.
* breakpoint.c (all_breakpoints_info):  Rename to
maintenance_info_breakpoints.
* breakpoint.c (_initialize_breakpoint):  Convert add_info of
all_breakpoints_info to add maintenance_info_breakpoints to the
maintenanceinfolist instead.
main.c (initialize_main):  Set up maintenance class commands.

gdb/.Sanitize
gdb/ChangeLog
gdb/Makefile.in
gdb/defs.h
gdb/gdbcmd.h
gdb/gdbtypes.c
gdb/gdbtypes.h
gdb/language.c
gdb/main.c
gdb/maint.c [new file with mode: 0644]
gdb/valprint.c

index 5101723a4ee06895abb167fa2c9a553745db9c24..c72be7e33a7197a9f7b40312a6f3c4b1293847ed 100644 (file)
@@ -128,6 +128,7 @@ m88k-tdep.c
 m88k-xdep.c
 mach386-xdep.c
 main.c
+maint.c
 mem-break.c
 minimon.h
 minsyms.c
index 6e0cbc6a99c8e6dc29dcab4517aa3e58d5d0e179..67576715029c44d9c2930b4b86e4887cca4cc2a2 100644 (file)
@@ -1,3 +1,49 @@
+Sun Jul  5 17:17:16 1992  Fred Fish  (fnf@cygnus.com)
+
+       * maint.c:  New file.
+       * Makefile.in (SFILES_MAINDIR):  Add new file maint.c.
+       * Makefile.in (OBS):  Add new file maint.o.
+       * defs.h (command_class):  Add class_maintenance.
+       * defs.h (MAINTENANCE_CMDS):  Default to including maintenance
+       commands.  Allow for them (and other nonessential parts of gdb)
+       to be selectively left out under special circumstances.
+       * gdbtypes.c (recursive_dump_type):  New function; supports
+       maintenance print-type command.
+       * gdbtypes.h (recursive_dump_type, maintenance_print_type):
+       Add prototypes.
+       * main.c (maintenancelist, maintenanceinfolist):  Add maintenance
+       command lists.
+       * main.c (initialize_cmd_lists):  Eliminate unnecessary casts on
+       initializers.  Add initializations for setprintlist, showprintlist,
+       setchecklist, showchecklist, maintenancelist, and maintenanceinfolist.
+       * printcmd.c (maintenance_print_type):  New maintenance cmd.
+       * valprint.c (setprintlist, showprintlist):  Move to main.c, as
+       implied by comment that all cmd lists are owned by main.c.
+       * infcmd.c (unsetlist):  Move to main.c, as implied by comment
+       that all cmd lists are owned by main.c.
+       * language.c (setchecklist, showchecklist):  Move to main.c, as
+       implied by comment that all cmd lists are owned by main.c
+       * breakpoint.c (enablelist, enablebreaklist, disablelist, cmdlist,
+       deletelist):  Remove redundant declarations (also in gdbcmd.h).
+       * symmisc.c (printsyms_command):  Now maintenance_print_symbols.
+       * symmisc.c (printmsyms_command):  Now maintenance_print_msymbols.
+       * symmisc.c (printpsyms_command):  Now maintenance_print_psymbols.
+       * symmisc.c (printobjfiles_command):  Now maintenance_print_objfiles.
+       * symtab.h (maintenance_print_symbols, maintenance_print_psymbols,
+       maintenance_print_msymbols, maintenance_print_objfiles):
+       Add prototypes.
+       * symmisc.c (printsyms_command, printpsyms_command,
+       printmsyms_command, printobjfiles_command):  Removed from
+       _initialize_symmisc.
+       * main.c (dump_me_command):  Moved to maint.c and renamed to
+       maintenance_dump_me.
+       * breakpoint.c (all_breakpoints_info):  Rename to
+       maintenance_info_breakpoints.
+       * breakpoint.c (_initialize_breakpoint):  Convert add_info of
+       all_breakpoints_info to add maintenance_info_breakpoints to the
+       maintenanceinfolist instead.
+       main.c (initialize_main):  Set up maintenance class commands.
+
 Sun Jul  5 11:03:53 1992  Stu Grossman  (grossman at cygnus.com)
 
        * energize-patches:  Fix minor problems with building energize lib.
index 6c999445580ef5c5fbb14ec97b3801bf703ca790..18eddd314cb8ee8eb24752dc5684abe121a890de 100644 (file)
@@ -194,7 +194,7 @@ SFILES_MAINDIR = \
         ${DEMANGLER}.c mem-break.c target.c inftarg.c \
         dbxread.c coffread.c elfread.c dwarfread.c xcoffread.c \
         ieee-float.c language.c parse.c buildsym.c objfiles.c \
-        minsyms.c mipsread.c
+        minsyms.c mipsread.c maint.c
 
 # Source files in subdirectories (which will be handled separately by
 #  'make gdb.tar.Z').
@@ -280,7 +280,7 @@ OBS = main.o blockframe.o breakpoint.o findvar.o stack.o source.o \
     command.o utils.o expprint.o environ.o version.o gdbtypes.o \
     copying.o $(DEPFILES) ${DEMANGLER}.o mem-break.o target.o \
     inftarg.o ieee-float.o putenv.o parse.o language.o $(YYOBJ) \
-    buildsym.o objfiles.o minsyms.o \
+    buildsym.o objfiles.o minsyms.o maint.o \
     dbxread.o coffread.o elfread.o dwarfread.o xcoffread.o mipsread.o
 
 RAPP_OBS = rgdb.o rudp.o rserial.o serial.o udp.o $(XDEPFILES)
index 1190f058c59a1b1bc0c33b2531ef8fc59631abbb..d093646475ee813393badc38ee73b1c39a208ddf 100644 (file)
@@ -57,7 +57,7 @@ enum command_class
   /* Classes of commands */
   no_class = -1, class_run = 0, class_vars, class_stack,
   class_files, class_support, class_info, class_breakpoint,
-  class_alias, class_obscure, class_user
+  class_alias, class_obscure, class_user, class_maintenance
 };
 
 /* the cleanup list records things that have to be undone
@@ -787,4 +787,19 @@ push_word PARAMS ((CORE_ADDR, REGISTER_TYPE));
 extern CORE_ADDR
 push_word ();
 
+/* Some parts of gdb might be considered optional, in the sense that they
+   are not essential for being able to build a working, usable debugger
+   for a specific environment.  For example, the maintenance commands
+   are there for the benefit of gdb maintainers.  As another example,
+   some environments really don't need gdb's that are able to read N
+   different object file formats.  In order to make it possible (but
+   not necessarily recommended) to build "stripped down" versions of
+   gdb, the following defines control selective compilation of those
+   parts of gdb which can be safely left out when necessary.  Note that
+   the default is to include everything. */
+
+#ifndef MAINTENANCE_CMDS
+#define MAINTENANCE_CMDS 1
+#endif
+
 #endif /* !defined (DEFS_H) */
index 39151f575df857c6f1f9878615e7a56b96a1f044..f5f7d82be332fcdb7be7928681e500677d499f87 100644 (file)
@@ -1,19 +1,22 @@
 /* Header file for GDB-specific command-line stuff.
-   Copyright (C) 1986, 1989, 1990 Free Software Foundation, Inc.
+   Copyright 1986, 1989, 1990, 1992 Free Software Foundation, Inc.
 
-   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 1, 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., 675 Mass Ave, Cambridge, MA 02139, 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., 675 Mass Ave, Cambridge, MA 02139, USA.  */
+
+#if !defined (GDBCMD_H)
+#define GDBCMD_H 1
 
 #include "command.h"
 
@@ -45,7 +48,12 @@ extern struct cmd_list_element *enablebreaklist;
 
 extern struct cmd_list_element *setlist;
 
+/* Chain containing all defined unset subcommands */
+
+extern struct cmd_list_element *unsetlist;
+
 /* Chain containing all defined show subcommands.  */
+
 extern struct cmd_list_element *showlist;
 
 /* Chain containing all defined \"set history\".  */
@@ -53,11 +61,37 @@ extern struct cmd_list_element *showlist;
 extern struct cmd_list_element *sethistlist;
 
 /* Chain containing all defined \"show history\".  */
+
 extern struct cmd_list_element *showhistlist;
 
 /* Chain containing all defined \"unset history\".  */
 
 extern struct cmd_list_element *unsethistlist;
 
-void execute_command ();
-char **noop_completer ();
+/* Chain containing all defined maintenance subcommands. */
+
+#if MAINTENANCE_CMDS
+extern struct cmd_list_element *maintenancelist;
+#endif
+
+/* Chain containing all defined "maintenance info" subcommands. */
+
+#if MAINTENANCE_CMDS
+extern struct cmd_list_element *maintenanceinfolist;
+#endif
+
+extern struct cmd_list_element *setprintlist;
+
+extern struct cmd_list_element *showprintlist;
+
+extern struct cmd_list_element *setchecklist;
+
+extern struct cmd_list_element *showchecklist;
+
+extern void
+execute_command PARAMS ((char *, int));
+
+extern char **
+noop_completer PARAMS ((char *));
+
+#endif /* !defined (GDBCMD_H) */
index 28e8aa4a156c9a4a755a5267efdabecca70bac51..5f03549eb0fbfce6ee32d14097d547e587d044ac 100644 (file)
@@ -1105,3 +1105,113 @@ lookup_fundamental_type (objfile, typeid)
   return (type);
 }
 
+#if MAINTENANCE_CMDS
+
+void recursive_dump_type (type, spaces)
+    struct type *type;
+    int spaces;
+{
+  int idx;
+  struct field *fldp;
+
+  print_spaces_filtered (spaces, stdout);
+  printf_filtered ("type node @ 0x%x\n", type);
+  print_spaces_filtered (spaces, stdout);
+  printf_filtered ("name: 0x%x '%s'\n", type -> name,
+                  type -> name ? type -> name : "<NULL>");
+  print_spaces_filtered (spaces, stdout);
+  printf_filtered ("code: 0x%x ", type -> code);
+  switch (type -> code)
+    {
+      case TYPE_CODE_UNDEF: printf_filtered ("TYPE_CODE_UNDEF"); break;
+      case TYPE_CODE_PTR: printf_filtered ("TYPE_CODE_PTR"); break;
+      case TYPE_CODE_ARRAY: printf_filtered ("TYPE_CODE_ARRAY"); break;
+      case TYPE_CODE_STRUCT: printf_filtered ("TYPE_CODE_STRUCT"); break;
+      case TYPE_CODE_UNION: printf_filtered ("TYPE_CODE_UNION"); break;
+      case TYPE_CODE_ENUM: printf_filtered ("TYPE_CODE_ENUM"); break;
+      case TYPE_CODE_FUNC: printf_filtered ("TYPE_CODE_FUNC"); break;
+      case TYPE_CODE_INT: printf_filtered ("TYPE_CODE_INT"); break;
+      case TYPE_CODE_FLT: printf_filtered ("TYPE_CODE_FLT"); break;
+      case TYPE_CODE_VOID: printf_filtered ("TYPE_CODE_VOID"); break;
+      case TYPE_CODE_SET: printf_filtered ("TYPE_CODE_SET"); break;
+      case TYPE_CODE_RANGE: printf_filtered ("TYPE_CODE_RANGE"); break;
+      case TYPE_CODE_PASCAL_ARRAY: printf_filtered ("TYPE_CODE_PASCAL_ARRAY"); break;
+      case TYPE_CODE_ERROR: printf_filtered ("TYPE_CODE_ERROR"); break;
+      case TYPE_CODE_MEMBER: printf_filtered ("TYPE_CODE_MEMBER"); break;
+      case TYPE_CODE_METHOD: printf_filtered ("TYPE_CODE_METHOD"); break;
+      case TYPE_CODE_REF: printf_filtered ("TYPE_CODE_REF"); break;
+      case TYPE_CODE_CHAR: printf_filtered ("TYPE_CODE_CHAR"); break;
+      case TYPE_CODE_BOOL: printf_filtered ("TYPE_CODE_BOOL"); break;
+      default: printf_filtered ("<UNKNOWN TYPE CODE>"); break;
+    }
+  printf_filtered ("\n");
+  print_spaces_filtered (spaces, stdout);
+  printf_filtered ("length: %d\n", type -> length);
+  print_spaces_filtered (spaces, stdout);
+  printf_filtered ("objfile: 0x%x\n", type -> objfile);
+  print_spaces_filtered (spaces, stdout);
+  printf_filtered ("target_type: 0x%x\n", type -> target_type);
+  if (type -> target_type != NULL)
+    {
+      recursive_dump_type (type -> target_type, spaces + 2);
+    }
+  print_spaces_filtered (spaces, stdout);
+  printf_filtered ("pointer_type: 0x%x\n", type -> pointer_type);
+  print_spaces_filtered (spaces, stdout);
+  printf_filtered ("reference_type: 0x%x\n", type -> reference_type);
+  print_spaces_filtered (spaces, stdout);
+  printf_filtered ("function_type: 0x%x\n", type -> function_type);
+
+  print_spaces_filtered (spaces, stdout);
+  printf_filtered ("flags: 0x%x", type -> flags);
+  if (type -> flags & TYPE_FLAG_UNSIGNED)
+    printf_filtered (" TYPE_FLAG_UNSIGNED");
+  if (type -> flags & TYPE_FLAG_SIGNED)
+    printf_filtered (" TYPE_FLAG_SIGNED");
+  if (type -> flags & TYPE_FLAG_STUB)
+    printf_filtered (" TYPE_FLAG_STUB");
+  printf_filtered ("\n");
+
+  print_spaces_filtered (spaces, stdout);
+  printf_filtered ("nfields: %d at 0x%x\n", type -> nfields, type -> fields);
+  for (idx = 0; idx < type -> nfields; idx++)
+    {
+      fldp = &(type -> fields[idx]);
+      print_spaces_filtered (spaces + 2, stdout);
+      printf_filtered ("[%d] bitpos %d bitsize %d type 0x%x name 0x%x '%s'\n",
+                      idx, fldp -> bitpos, fldp -> bitsize, fldp -> type,
+                      fldp -> name, fldp -> name ? fldp -> name : "<NULL>");
+      if (fldp -> type != NULL)
+       {
+         recursive_dump_type (fldp -> type, spaces + 4);
+       }
+    }
+
+  print_spaces_filtered (spaces, stdout);
+  printf_filtered ("vptr_basetype: 0x%x\n", type -> vptr_basetype);
+  if (type -> vptr_basetype != NULL)
+    {
+      recursive_dump_type (type -> vptr_basetype, spaces + 2);
+    }
+
+  print_spaces_filtered (spaces, stdout);
+  printf_filtered ("vptr_fieldno: %d\n", type -> vptr_fieldno);
+
+  switch (type -> code)
+    {
+      case TYPE_CODE_METHOD:
+      case TYPE_CODE_FUNC:
+       print_spaces_filtered (spaces, stdout);
+       printf_filtered ("arg_types: 0x%x\n",
+                        type -> type_specific.arg_types);
+       break;
+
+      case TYPE_CODE_STRUCT:
+       print_spaces_filtered (spaces, stdout);
+       printf_filtered ("cplus_stuff: 0x%x\n",
+                        type -> type_specific.cplus_stuff);
+       break;
+    }
+}
+
+#endif /* MAINTENANCE_CMDS */
index 7e51e458ac8de5fd94dacc9b8882519483cdd234..699eff0ae150884b1eb8215cc1930c6a2732dbeb 100644 (file)
@@ -557,9 +557,17 @@ lookup_fundamental_type PARAMS ((struct objfile *, int));
 extern void
 fill_in_vptr_fieldno PARAMS ((struct type *));
 
+#if MAINTENANCE_CMDS
+extern void recursive_dump_type PARAMS ((struct type *, int));
+#endif
+
 /* printcmd.c */
 
 extern void
 print_scalar_formatted PARAMS ((char *, struct type *, int, int, FILE *));
 
+#if MAINTENANCE_CMDS
+extern void maintenance_print_type PARAMS ((char *, int));
+#endif
+
 #endif /* GDBTYPES_H */
index c9fc34bb43a065c5f075387540403d32d8a28c41..2ecb150226450b064050346e460bc03ec74499bb 100644 (file)
@@ -981,9 +981,6 @@ language_str(lang)
   return "Unknown";
 }
 
-struct cmd_list_element *setchecklist = NULL;
-struct cmd_list_element *showchecklist = NULL;
-
 static void
 set_check (ignore, from_tty)
    char *ignore;
index 5efb478e8d820a50004c40d38e857d15449b99b6..0eb254f6647bc1229428c4b52cff715bff15d121 100644 (file)
@@ -119,9 +119,6 @@ set_history_size_command PARAMS ((char *, int, struct cmd_list_element *));
 static void
 show_commands PARAMS ((char *, int));
 
-static void
-dump_me_command PARAMS ((char *, int));
-
 static void
 echo_command PARAMS ((char *, int));
 
@@ -227,7 +224,12 @@ struct cmd_list_element *enablebreaklist;
 
 struct cmd_list_element *setlist;
 
+/* Chain containing all defined unset subcommands */
+
+struct cmd_list_element *unsetlist;
+
 /* Chain containing all defined show subcommands.  */
+
 struct cmd_list_element *showlist;
 
 /* Chain containing all defined \"set history\".  */
@@ -235,12 +237,33 @@ struct cmd_list_element *showlist;
 struct cmd_list_element *sethistlist;
 
 /* Chain containing all defined \"show history\".  */
+
 struct cmd_list_element *showhistlist;
 
 /* Chain containing all defined \"unset history\".  */
 
 struct cmd_list_element *unsethistlist;
 
+/* Chain containing all defined maintenance subcommands. */
+
+#if MAINTENANCE_CMDS
+struct cmd_list_element *maintenancelist;
+#endif
+
+/* Chain containing all defined "maintenance info" subcommands. */
+
+#if MAINTENANCE_CMDS
+struct cmd_list_element *maintenanceinfolist;
+#endif
+
+struct cmd_list_element *setprintlist;
+
+struct cmd_list_element *showprintlist;
+
+struct cmd_list_element *setchecklist;
+
+struct cmd_list_element *showchecklist;
+
 /* stdio stream that command input is being read from.  */
 
 FILE *instream;
@@ -1998,18 +2021,6 @@ echo_command (text, from_tty)
   fflush (stdout);
 }
 
-/* ARGSUSED */
-static void
-dump_me_command (args, from_tty)
-     char *args;
-     int from_tty;
-{
-  if (query ("Should GDB dump core? "))
-    {
-      signal (SIGQUIT, SIG_DFL);
-      kill (getpid (), SIGQUIT);
-    }
-}
 \f
 /* Functions to manipulate command line editing control variables.  */
 
@@ -2178,17 +2189,26 @@ batch_mode ()
 static void
 initialize_cmd_lists ()
 {
-  cmdlist = (struct cmd_list_element *) 0;
-  infolist = (struct cmd_list_element *) 0;
-  enablelist = (struct cmd_list_element *) 0;
-  disablelist = (struct cmd_list_element *) 0;
-  deletelist = (struct cmd_list_element *) 0;
-  enablebreaklist = (struct cmd_list_element *) 0;
-  setlist = (struct cmd_list_element *) 0;
+  cmdlist = NULL;
+  infolist = NULL;
+  enablelist = NULL;
+  disablelist = NULL;
+  deletelist = NULL;
+  enablebreaklist = NULL;
+  setlist = NULL;
+  unsetlist = NULL;
   showlist = NULL;
-  sethistlist = (struct cmd_list_element *) 0;
+  sethistlist = NULL;
   showhistlist = NULL;
-  unsethistlist = (struct cmd_list_element *) 0;
+  unsethistlist = NULL;
+#if MAINTENANCE_CMDS
+  maintenancelist = NULL;
+  maintenanceinfolist = NULL;
+#endif
+  setprintlist = NULL;
+  showprintlist = NULL;
+  setchecklist = NULL;
+  showchecklist = NULL;
 }
 
 /* Init the history buffer.  Note that we are called after the init file(s)
@@ -2247,6 +2267,12 @@ initialize_main ()
   /* Define the classes of commands.
      They will appear in the help list in the reverse of this order.  */
 
+  add_cmd ("internals", class_maintenance, NO_FUNCTION,
+          "Maintenance commands.\n\
+Some gdb commands are provided just for use by gdb maintainers.\n\
+These commands are subject to frequent change, and may not be as\n\
+well documented as user commands.",
+          &cmdlist);
   add_cmd ("obscure", class_obscure, NO_FUNCTION, "Obscure features.", &cmdlist);
   add_cmd ("aliases", class_alias, NO_FUNCTION, "Aliases of other commands.", &cmdlist);
   add_cmd ("user-defined", class_user, NO_FUNCTION, "User-defined commands.\n\
@@ -2325,9 +2351,6 @@ when gdb is started.");
   c->function.sfunc = set_verbose;
   set_verbose (NULL, 0, c);
   
-  add_com ("dump-me", class_obscure, dump_me_command,
-          "Get fatal error; make debugger dump its core.");
-
   add_show_from_set
     (add_set_cmd ("editing", class_support, var_boolean, (char *)&command_editing_p,
           "Set editing of command lines as they are typed.\n\
diff --git a/gdb/maint.c b/gdb/maint.c
new file mode 100644 (file)
index 0000000..f1e8999
--- /dev/null
@@ -0,0 +1,158 @@
+/* Support for GDB maintenance commands.
+   Copyright (C) 1992 Free Software Foundation, Inc.
+   Written by Fred Fish at Cygnus Support.
+
+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 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., 675 Mass Ave, Cambridge, MA 02139, USA.  */
+
+
+#include "defs.h"
+
+#if MAINTENANCE_CMDS   /* Entire file goes away if not including maint cmds */
+
+#include <signal.h>
+#include "command.h"
+#include "gdbcmd.h"
+#include "symtab.h"
+#include "gdbtypes.h"
+
+static void
+maintenance_command PARAMS ((char *, int));
+
+static void
+maintenance_dump_me PARAMS ((char *, int));
+
+/*
+
+LOCAL FUNCTION
+
+       maintenance_command -- access the maintenance subcommands
+
+SYNOPSIS
+
+       void maintenance_command (char *args, int from_tty)
+
+DESCRIPTION
+
+*/
+
+static void
+maintenance_command (args, from_tty)
+     char *args;
+     int from_tty;
+{
+  error ("Unimplemented maintenance command '%s'", args);
+}
+
+
+/* ARGSUSED */
+static void
+maintenance_dump_me (args, from_tty)
+     char *args;
+     int from_tty;
+{
+  if (query ("Should GDB dump core? "))
+    {
+      signal (SIGQUIT, SIG_DFL);
+      kill (getpid (), SIGQUIT);
+    }
+}
+
+/* The "maintenance info" command is defined as a prefix, with allow_unknown 0.
+   Therefore, its own definition is called only for "maintenance info" with
+   no args.  */
+
+/* ARGSUSED */
+static void
+maintenance_info_command (arg, from_tty)
+     char *arg;
+     int from_tty;
+{
+  printf ("\"maintenance info\" must be followed by the name of an info command.\n");
+  help_list (maintenanceinfolist, "maintenance info ", -1, stdout);
+}
+
+/*
+
+GLOBAL FUNCTION
+
+       _initialize_maint_cmds -- initialize the process file system stuff
+
+SYNOPSIS
+
+       void _initialize_maint_cmds (void)
+
+DESCRIPTION
+
+       Do required initializations during gdb startup for using the
+       /proc file system interface.
+
+*/
+
+
+void
+_initialize_maint_cmds ()
+{
+  add_prefix_cmd ("maintenance", class_maintenance, maintenance_command,
+                 "Commands for use by GDB maintainers.\n\
+Includes commands to dump specific internal GDB structures in\n\
+a human readable form, including dumping of symbol tables, type\n\
+chains, etc.",
+                 &maintenancelist, "maintenance ", 1,
+                 &cmdlist);
+
+  add_prefix_cmd ("info", class_info, maintenance_info_command,
+        "Maintenance command for showing things about the program being debugged.",
+                 &maintenanceinfolist, "maintenance info ", 1,
+                 &maintenancelist);
+
+  add_cmd ("dump-me", class_maintenance, maintenance_dump_me,
+          "Get fatal error; make debugger dump its core.\n\
+GDB sets it's handling of SIGQUIT back to SIG_DFL and then sends\n\
+itself a SIGQUIT signal.",
+          &maintenancelist);
+
+  add_cmd ("print-type", class_maintenance, maintenance_print_type,
+          "Print a type chain for a given symbol.\n\
+For each node in a type chain, print the raw data for each member of\n\
+the type structure, and the interpretation of the data.",
+          &maintenancelist);
+
+  add_cmd ("print-symbols", class_maintenance, maintenance_print_symbols,
+          "Print dump of current symbol definitions.\n\
+Entries in the full symbol table are dumped to file OUTFILE.\n\
+If a SOURCE file is specified, dump only that file's symbols.",
+          &maintenancelist);
+
+  add_cmd ("print-msymbols", class_maintenance, maintenance_print_msymbols,
+          "Print dump of current minimal symbol definitions.\n\
+Entries in the minimal symbol table are dumped to file OUTFILE.\n\
+If a SOURCE file is specified, dump only that file's minimal symbols.",
+          &maintenancelist);
+
+  add_cmd ("print-psymbols", class_maintenance, maintenance_print_psymbols,
+          "Print dump of current partial symbol definitions.\n\
+Entries in the partial symbol table are dumped to file OUTFILE.\n\
+If a SOURCE file is specified, dump only that file's partial symbols.",
+          &maintenancelist);
+
+  add_cmd ("print-objfiles", class_maintenance, maintenance_print_objfiles,
+          "Print dump of current object file definitions.",
+          &maintenancelist);
+
+}
+
+#endif /* MAINTENANCE_CMDS */
index 4e5525faadfd383cdcc71983018b8e5eb9b1f418..e8c99ec260c750d67313873a6fbc7da21e6ad185 100644 (file)
@@ -2001,9 +2001,6 @@ set_radix (arg, from_tty, c)
   set_output_radix (arg, 0, c);
 }
 \f
-struct cmd_list_element *setprintlist = NULL;
-struct cmd_list_element *showprintlist = NULL;
-
 /*ARGSUSED*/
 static void
 set_print (arg, from_tty)