aboutsummaryrefslogtreecommitdiff
path: root/gdb/cli
diff options
context:
space:
mode:
authorDoug Evans <dje@google.com>2013-03-21 17:37:30 +0000
committerDoug Evans <dje@google.com>2013-03-21 17:37:30 +0000
commitbd712aed2f88ab824d403c55a212c2be3f41a335 (patch)
tree490fa4cc174545d0a4962ef985b39c00ffad42e3 /gdb/cli
parentd76488d84eb95326e157d8deca0f626914036667 (diff)
downloadgdb-bd712aed2f88ab824d403c55a212c2be3f41a335.zip
gdb-bd712aed2f88ab824d403c55a212c2be3f41a335.tar.gz
gdb-bd712aed2f88ab824d403c55a212c2be3f41a335.tar.bz2
New commands "mt set per-command {space,time,symtab} {on,off}".
* NEWS: Add entry. * event-top.c: #include "maint.h". * main.c: #include "maint.h". * maint.c: #include <sys/time.h>, <time.h>, block.h, top.h, timeval-utils.h, maint.h, cli/cli-setshow.h. (per_command_time, per_command_space): New static globals. (per_command_symtab): New static global. (per_command_setlist, per_command_showlist): New static globals. (struct cmd_stats): Move here from utils.c. (set_per_command_time): Renamed from set_display_time in utils.c and moved here. All callers updated. (set_per_command_space): Renamed from set_display_space in utils.c and moved here. All callers updated. (count_symtabs_and_blocks): New function. (report_command_stats): Moved here from utils.c. Add support for printing symtab stats. Only print data if enabled before command executed. (make_command_stats_cleanup): Ditto. (sert_per_command_cmd, show_per_command_cmd): New functions. (_initialize_maint_cmds): Add new commands mt set per-command {space,time,symtab} {on,off}. * maint.h: New file. * top.c: #include "maint.h". * utils.c (reset_prompt_for_continue_wait_time): New function. (get_prompt_for_continue_wait_time): New function. * utils.h (reset_prompt_for_continue_wait_time): Declare (get_prompt_for_continue_wait_time): Declare. (make_command_stats_cleanup): Moved to maint.h. (set_display_time, set_display_space): Moved to maint.h and renamed to set_per_command_time, set_per_command_space. * cli/cli-setshow.c (parse_cli_boolean_value): Renamed from parse_binary_operation and made non-static. Don't call error, just return an error marker. All callers updated. * cli/cli-setshow.h (parse_cli_boolean_value): Declare. doc/ * gdb.texinfo (Maintenance Commands): Add docs for "mt set per-command {space,time,symtab} {on,off}". testsuite/ * gdb.base/maint.exp: Update tests for per-command stats.
Diffstat (limited to 'gdb/cli')
-rw-r--r--gdb/cli/cli-setshow.c19
-rw-r--r--gdb/cli/cli-setshow.h6
2 files changed, 11 insertions, 14 deletions
diff --git a/gdb/cli/cli-setshow.c b/gdb/cli/cli-setshow.c
index 3a0e978..95ebbe7 100644
--- a/gdb/cli/cli-setshow.c
+++ b/gdb/cli/cli-setshow.c
@@ -29,10 +29,6 @@
#include "cli/cli-cmds.h"
#include "cli/cli-setshow.h"
-/* Prototypes for local functions. */
-
-static int parse_binary_operation (char *);
-
/* Return true if the change of command parameter should be notified. */
static int
@@ -76,8 +72,10 @@ parse_auto_binary_operation (const char *arg)
return AUTO_BOOLEAN_AUTO; /* Pacify GCC. */
}
-static int
-parse_binary_operation (char *arg)
+/* See cli-setshow.h. */
+
+int
+parse_cli_boolean_value (char *arg)
{
int length;
@@ -100,10 +98,7 @@ parse_binary_operation (char *arg)
|| strncmp (arg, "disable", length) == 0)
return 0;
else
- {
- error (_("\"on\" or \"off\" expected."));
- return 0;
- }
+ return -1;
}
void
@@ -248,8 +243,10 @@ do_set_command (char *arg, int from_tty, struct cmd_list_element *c)
break;
case var_boolean:
{
- int val = parse_binary_operation (arg);
+ int val = parse_cli_boolean_value (arg);
+ if (val < 0)
+ error (_("\"on\" or \"off\" expected."));
if (val != *(int *) c->var)
{
*(int *) c->var = val;
diff --git a/gdb/cli/cli-setshow.h b/gdb/cli/cli-setshow.h
index 079b9da..152080b 100644
--- a/gdb/cli/cli-setshow.h
+++ b/gdb/cli/cli-setshow.h
@@ -19,15 +19,15 @@
struct cmd_list_element;
-/* Exported to cli/cli-cmds.c and gdb/top.c */
+/* Parse ARG, an option to a boolean variable.
+ Returns 1 for true, 0 for false, and -1 if invalid. */
+extern int parse_cli_boolean_value (char *arg);
extern void do_set_command (char *arg, int from_tty,
struct cmd_list_element *c);
extern void do_show_command (char *arg, int from_tty,
struct cmd_list_element *c);
-/* Exported to cli/cli-cmds.c and gdb/top.c, language.c and valprint.c */
-
extern void cmd_show_list (struct cmd_list_element *list, int from_tty,
char *prefix);