diff options
author | Fred Fish <fnf@specifix.com> | 1992-07-06 00:22:57 +0000 |
---|---|---|
committer | Fred Fish <fnf@specifix.com> | 1992-07-06 00:22:57 +0000 |
commit | 0239d9b3289ab977e563150cfab9a98cd1c2e216 (patch) | |
tree | 2a1cb69164e5af8ac74d7ed006a1ccb61fd72155 /gdb/maint.c | |
parent | 6a701ae20545e50156a39b8ce3959116ee2153d0 (diff) | |
download | gdb-0239d9b3289ab977e563150cfab9a98cd1c2e216.zip gdb-0239d9b3289ab977e563150cfab9a98cd1c2e216.tar.gz gdb-0239d9b3289ab977e563150cfab9a98cd1c2e216.tar.bz2 |
* 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.
Diffstat (limited to 'gdb/maint.c')
-rw-r--r-- | gdb/maint.c | 158 |
1 files changed, 158 insertions, 0 deletions
diff --git a/gdb/maint.c b/gdb/maint.c new file mode 100644 index 0000000..f1e8999 --- /dev/null +++ b/gdb/maint.c @@ -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 */ |