Constify execute_command
This constifies execute_command and fixes up the callers. gdb/ChangeLog 2017-11-07 Tom Tromey <tom@tromey.com> * event-top.h (command_handler): Constify. * record-full.c (cmd_record_full_start): Update. * thread.c (thread_apply_all_command): Update. * printcmd.c (eval_command): Update. * mi/mi-main.c (mi_execute_cli_command): Update. (mi_execute_async_cli_command): Update. * tui/tui-stack.c (tui_update_command): Update. * cli/cli-interp.c (safe_execute_command): Constify. * record.c (record_start): Update. (record_start, record_stop, cmd_record_start): Update. * record-btrace.c (cmd_record_btrace_bts_start): Update. (cmd_record_btrace_pt_start): Update. (cmd_record_btrace_start): Update. (cmd_record_btrace_start): Update. * reverse.c (exec_reverse_once): Update. * python/python.c (execute_gdb_command): Don't copy the command. * event-top.c (command_line_handler): Update. (command_handler): Constify. * defs.h (deprecated_call_command_hook): Constify. * cli/cli-script.h (execute_user_command): Constify. * cli/cli-script.c (execute_user_command): Constify. (execute_cmd_pre_hook, execute_cmd_post_hook): Constify. (enum command_control_type): Update. * main.c (catch_command_errors): Remove non-const overload. (catch_command_errors_ftype): Remove. * python/py-cmd.c (cmdpy_function): Constify. * guile/scm-cmd.c (cmdscm_function): Constify. * cli/cli-dump.c (call_dump_func): Constify. * cli/cli-decode.c (do_const_cfunc): Constify. (do_sfunc): Constify. (cmd_func): Constify. * gdbcmd.h (execute_command, execute_command_to_string): Constify. * top.h (execute_command): Constify. * top.c (execute_command): Constify. (execute_command_to_string): Constify. (deprecated_call_command_hook): Constify. * command.h (cmd_func): Constify. * cli/cli-decode.h (struct cmd_list_element) <func>: Constify.
This commit is contained in:
parent
eb4c3f4aaa
commit
95a6b0a106
26 changed files with 108 additions and 107 deletions
|
@ -1,3 +1,44 @@
|
|||
2017-11-07 Tom Tromey <tom@tromey.com>
|
||||
|
||||
* event-top.h (command_handler): Constify.
|
||||
* record-full.c (cmd_record_full_start): Update.
|
||||
* thread.c (thread_apply_all_command): Update.
|
||||
* printcmd.c (eval_command): Update.
|
||||
* mi/mi-main.c (mi_execute_cli_command): Update.
|
||||
(mi_execute_async_cli_command): Update.
|
||||
* tui/tui-stack.c (tui_update_command): Update.
|
||||
* cli/cli-interp.c (safe_execute_command): Constify.
|
||||
* record.c (record_start): Update.
|
||||
(record_start, record_stop, cmd_record_start): Update.
|
||||
* record-btrace.c (cmd_record_btrace_bts_start): Update.
|
||||
(cmd_record_btrace_pt_start): Update.
|
||||
(cmd_record_btrace_start): Update.
|
||||
(cmd_record_btrace_start): Update.
|
||||
* reverse.c (exec_reverse_once): Update.
|
||||
* python/python.c (execute_gdb_command): Don't copy the command.
|
||||
* event-top.c (command_line_handler): Update.
|
||||
(command_handler): Constify.
|
||||
* defs.h (deprecated_call_command_hook): Constify.
|
||||
* cli/cli-script.h (execute_user_command): Constify.
|
||||
* cli/cli-script.c (execute_user_command): Constify.
|
||||
(execute_cmd_pre_hook, execute_cmd_post_hook): Constify.
|
||||
(enum command_control_type): Update.
|
||||
* main.c (catch_command_errors): Remove non-const overload.
|
||||
(catch_command_errors_ftype): Remove.
|
||||
* python/py-cmd.c (cmdpy_function): Constify.
|
||||
* guile/scm-cmd.c (cmdscm_function): Constify.
|
||||
* cli/cli-dump.c (call_dump_func): Constify.
|
||||
* cli/cli-decode.c (do_const_cfunc): Constify.
|
||||
(do_sfunc): Constify.
|
||||
(cmd_func): Constify.
|
||||
* gdbcmd.h (execute_command, execute_command_to_string): Constify.
|
||||
* top.h (execute_command): Constify.
|
||||
* top.c (execute_command): Constify.
|
||||
(execute_command_to_string): Constify.
|
||||
(deprecated_call_command_hook): Constify.
|
||||
* command.h (cmd_func): Constify.
|
||||
* cli/cli-decode.h (struct cmd_list_element) <func>: Constify.
|
||||
|
||||
2017-11-07 Tom Tromey <tom@tromey.com>
|
||||
|
||||
* ada-lang.c (catch_ada_exception_command): Constify.
|
||||
|
|
|
@ -101,7 +101,7 @@ print_help_for_command (struct cmd_list_element *c, const char *prefix,
|
|||
bounce function (unless cfunc / sfunc is NULL that is). */
|
||||
|
||||
static void
|
||||
do_const_cfunc (struct cmd_list_element *c, char *args, int from_tty)
|
||||
do_const_cfunc (struct cmd_list_element *c, const char *args, int from_tty)
|
||||
{
|
||||
c->function.const_cfunc (args, from_tty);
|
||||
}
|
||||
|
@ -117,7 +117,7 @@ set_cmd_cfunc (struct cmd_list_element *cmd, cmd_const_cfunc_ftype *cfunc)
|
|||
}
|
||||
|
||||
static void
|
||||
do_sfunc (struct cmd_list_element *c, char *args, int from_tty)
|
||||
do_sfunc (struct cmd_list_element *c, const char *args, int from_tty)
|
||||
{
|
||||
c->function.sfunc (args, from_tty, c);
|
||||
}
|
||||
|
@ -1909,7 +1909,7 @@ cmd_func_p (struct cmd_list_element *cmd)
|
|||
|
||||
/* Call the command function. */
|
||||
void
|
||||
cmd_func (struct cmd_list_element *cmd, char *args, int from_tty)
|
||||
cmd_func (struct cmd_list_element *cmd, const char *args, int from_tty)
|
||||
{
|
||||
if (cmd_func_p (cmd))
|
||||
{
|
||||
|
|
|
@ -107,7 +107,7 @@ struct cmd_list_element
|
|||
cagney/2002-02-02: This function signature is evolving. For
|
||||
the moment suggest sticking with either set_cmd_cfunc() or
|
||||
set_cmd_sfunc(). */
|
||||
void (*func) (struct cmd_list_element *c, char *args, int from_tty);
|
||||
void (*func) (struct cmd_list_element *c, const char *args, int from_tty);
|
||||
/* The command's real callback. At present func() bounces through
|
||||
to one of the below. */
|
||||
union
|
||||
|
|
|
@ -344,7 +344,7 @@ struct dump_context
|
|||
};
|
||||
|
||||
static void
|
||||
call_dump_func (struct cmd_list_element *c, char *args, int from_tty)
|
||||
call_dump_func (struct cmd_list_element *c, const char *args, int from_tty)
|
||||
{
|
||||
struct dump_context *d = (struct dump_context *) get_cmd_context (c);
|
||||
|
||||
|
|
|
@ -80,7 +80,7 @@ as_cli_interp (struct interp *interp)
|
|||
|
||||
/* Longjmp-safe wrapper for "execute_command". */
|
||||
static struct gdb_exception safe_execute_command (struct ui_out *uiout,
|
||||
char *command,
|
||||
const char *command,
|
||||
int from_tty);
|
||||
|
||||
/* See cli-interp.h.
|
||||
|
@ -332,11 +332,6 @@ cli_interp::exec (const char *command_str)
|
|||
struct ui_file *old_stream;
|
||||
struct gdb_exception result;
|
||||
|
||||
/* FIXME: cagney/2003-02-01: Need to const char *propogate
|
||||
safe_execute_command. */
|
||||
char *str = (char *) alloca (strlen (command_str) + 1);
|
||||
strcpy (str, command_str);
|
||||
|
||||
/* gdb_stdout could change between the time cli_uiout was
|
||||
initialized and now. Since we're probably using a different
|
||||
interpreter which has a new ui_file for gdb_stdout, use that one
|
||||
|
@ -345,7 +340,7 @@ cli_interp::exec (const char *command_str)
|
|||
It is important that it gets reset everytime, since the user
|
||||
could set gdb to use a different interpreter. */
|
||||
old_stream = cli->cli_uiout->set_stream (gdb_stdout);
|
||||
result = safe_execute_command (cli->cli_uiout, str, 1);
|
||||
result = safe_execute_command (cli->cli_uiout, command_str, 1);
|
||||
cli->cli_uiout->set_stream (old_stream);
|
||||
return result;
|
||||
}
|
||||
|
@ -357,7 +352,8 @@ cli_interp_base::supports_command_editing ()
|
|||
}
|
||||
|
||||
static struct gdb_exception
|
||||
safe_execute_command (struct ui_out *command_uiout, char *command, int from_tty)
|
||||
safe_execute_command (struct ui_out *command_uiout, const char *command,
|
||||
int from_tty)
|
||||
{
|
||||
struct gdb_exception e = exception_none;
|
||||
struct ui_out *saved_uiout;
|
||||
|
|
|
@ -369,7 +369,7 @@ execute_cmd_pre_hook (struct cmd_list_element *c)
|
|||
{
|
||||
scoped_restore_hook_in restore_hook (c);
|
||||
c->hook_in = 1; /* Prevent recursive hooking. */
|
||||
execute_user_command (c->hook_pre, (char *) 0);
|
||||
execute_user_command (c->hook_pre, nullptr);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -380,12 +380,12 @@ execute_cmd_post_hook (struct cmd_list_element *c)
|
|||
{
|
||||
scoped_restore_hook_in restore_hook (c);
|
||||
c->hook_in = 1; /* Prevent recursive hooking. */
|
||||
execute_user_command (c->hook_post, (char *) 0);
|
||||
execute_user_command (c->hook_post, nullptr);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
execute_user_command (struct cmd_list_element *c, char *args)
|
||||
execute_user_command (struct cmd_list_element *c, const char *args)
|
||||
{
|
||||
struct ui *ui = current_ui;
|
||||
struct command_line *cmdlines;
|
||||
|
@ -484,7 +484,7 @@ execute_control_command_1 (struct command_line *cmd)
|
|||
{
|
||||
/* A simple command, execute it and return. */
|
||||
std::string new_line = insert_user_defined_cmd_args (cmd->line);
|
||||
execute_command (&new_line[0], 0);
|
||||
execute_command (new_line.c_str (), 0);
|
||||
ret = cmd->control_type;
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -122,7 +122,7 @@ extern command_line_up copy_command_lines (struct command_line *cmds);
|
|||
|
||||
/* Exported to gdb/infrun.c */
|
||||
|
||||
extern void execute_user_command (struct cmd_list_element *c, char *args);
|
||||
extern void execute_user_command (struct cmd_list_element *c, const char *args);
|
||||
|
||||
/* If we're in a user-defined command, replace any $argc/$argN
|
||||
reference found in LINE with the arguments that were passed to the
|
||||
|
|
|
@ -453,6 +453,6 @@ extern int cmd_func_p (struct cmd_list_element *cmd);
|
|||
|
||||
/* Call the command function. */
|
||||
extern void cmd_func (struct cmd_list_element *cmd,
|
||||
char *args, int from_tty);
|
||||
const char *args, int from_tty);
|
||||
|
||||
#endif /* !defined (COMMAND_H) */
|
||||
|
|
|
@ -660,7 +660,7 @@ extern ptid_t (*deprecated_target_wait_hook) (ptid_t ptid,
|
|||
extern void (*deprecated_attach_hook) (void);
|
||||
extern void (*deprecated_detach_hook) (void);
|
||||
extern void (*deprecated_call_command_hook) (struct cmd_list_element * c,
|
||||
char *cmd, int from_tty);
|
||||
const char *cmd, int from_tty);
|
||||
|
||||
extern int (*deprecated_ui_load_progress_hook) (const char *section,
|
||||
unsigned long num);
|
||||
|
|
|
@ -565,10 +565,10 @@ async_disable_stdin (void)
|
|||
a whole command. */
|
||||
|
||||
void
|
||||
command_handler (char *command)
|
||||
command_handler (const char *command)
|
||||
{
|
||||
struct ui *ui = current_ui;
|
||||
char *c;
|
||||
const char *c;
|
||||
|
||||
if (ui->instream == ui->stdin_stream)
|
||||
reinitialize_more_filter ();
|
||||
|
@ -759,7 +759,7 @@ command_line_handler (char *rl)
|
|||
hung up but GDB is still alive. In such a case, we just quit
|
||||
gdb killing the inferior program too. */
|
||||
printf_unfiltered ("quit\n");
|
||||
execute_command ((char *) "quit", 1);
|
||||
execute_command ("quit", 1);
|
||||
}
|
||||
else if (cmd == NULL)
|
||||
{
|
||||
|
|
|
@ -36,7 +36,7 @@ extern void async_init_signals (void);
|
|||
extern void change_line_handler (int);
|
||||
|
||||
extern void command_line_handler (char *rl);
|
||||
extern void command_handler (char *command);
|
||||
extern void command_handler (const char *command);
|
||||
|
||||
#ifdef SIGTSTP
|
||||
extern void handle_sigtstp (int sig);
|
||||
|
|
|
@ -132,8 +132,8 @@ extern struct cmd_list_element *showchecklist;
|
|||
|
||||
extern struct cmd_list_element *save_cmdlist;
|
||||
|
||||
extern void execute_command (char *, int);
|
||||
extern std::string execute_command_to_string (char *p, int from_tty);
|
||||
extern void execute_command (const char *, int);
|
||||
extern std::string execute_command_to_string (const char *p, int from_tty);
|
||||
|
||||
enum command_control_type execute_control_command (struct command_line *);
|
||||
|
||||
|
|
|
@ -292,9 +292,8 @@ cmdscm_destroyer (struct cmd_list_element *self, void *context)
|
|||
|
||||
static void
|
||||
cmdscm_function (struct cmd_list_element *command,
|
||||
char *args_entry, int from_tty)
|
||||
const char *args, int from_tty)
|
||||
{
|
||||
const char *args = args_entry;
|
||||
command_smob *c_smob/*obj*/ = (command_smob *) get_cmd_context (command);
|
||||
SCM arg_scm, tty_scm, result;
|
||||
|
||||
|
|
29
gdb/main.c
29
gdb/main.c
|
@ -360,39 +360,12 @@ handle_command_errors (struct gdb_exception e)
|
|||
return 1;
|
||||
}
|
||||
|
||||
/* Type of the command callback passed to catch_command_errors. */
|
||||
|
||||
typedef void (catch_command_errors_ftype) (char *, int);
|
||||
|
||||
/* Wrap calls to commands run before the event loop is started. */
|
||||
|
||||
static int
|
||||
catch_command_errors (catch_command_errors_ftype *command,
|
||||
char *arg, int from_tty)
|
||||
{
|
||||
TRY
|
||||
{
|
||||
int was_sync = current_ui->prompt_state == PROMPT_BLOCKED;
|
||||
|
||||
command (arg, from_tty);
|
||||
|
||||
maybe_wait_sync_command_done (was_sync);
|
||||
}
|
||||
CATCH (e, RETURN_MASK_ALL)
|
||||
{
|
||||
return handle_command_errors (e);
|
||||
}
|
||||
END_CATCH
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* Type of the command callback passed to the const
|
||||
catch_command_errors. */
|
||||
|
||||
typedef void (catch_command_errors_const_ftype) (const char *, int);
|
||||
|
||||
/* Const-correct catch_command_errors. */
|
||||
/* Wrap calls to commands run before the event loop is started. */
|
||||
|
||||
static int
|
||||
catch_command_errors (catch_command_errors_const_ftype command,
|
||||
|
|
|
@ -2206,7 +2206,7 @@ mi_execute_cli_command (const char *cmd, int args_p, const char *args)
|
|||
/* FIXME: gdb_???? */
|
||||
fprintf_unfiltered (gdb_stdout, "cli=%s run=%s\n",
|
||||
cmd, run.c_str ());
|
||||
execute_command (&run[0], 0 /* from_tty */ );
|
||||
execute_command (run.c_str (), 0 /* from_tty */ );
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2220,7 +2220,7 @@ mi_execute_async_cli_command (const char *cli_command, char **argv, int argc)
|
|||
if (mi_async_p ())
|
||||
run += "&";
|
||||
|
||||
execute_command (&run[0], 0 /* from_tty */ );
|
||||
execute_command (run.c_str (), 0 /* from_tty */ );
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
@ -2617,7 +2617,7 @@ eval_command (const char *arg, int from_tty)
|
|||
|
||||
std::string expanded = insert_user_defined_cmd_args (stb.c_str ());
|
||||
|
||||
execute_command (&expanded[0], from_tty);
|
||||
execute_command (expanded.c_str (), from_tty);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
@ -110,9 +110,8 @@ cmdpy_destroyer (struct cmd_list_element *self, void *context)
|
|||
|
||||
static void
|
||||
cmdpy_function (struct cmd_list_element *command,
|
||||
char *args_entry, int from_tty)
|
||||
const char *args, int from_tty)
|
||||
{
|
||||
const char *args = args_entry;
|
||||
cmdpy_object *obj = (cmdpy_object *) get_cmd_context (command);
|
||||
|
||||
gdbpy_enter enter_py (get_current_arch (), current_language);
|
||||
|
|
|
@ -584,8 +584,6 @@ execute_gdb_command (PyObject *self, PyObject *args, PyObject *kw)
|
|||
|
||||
TRY
|
||||
{
|
||||
/* Copy the argument text in case the command modifies it. */
|
||||
std::string copy (arg);
|
||||
struct interp *interp;
|
||||
|
||||
scoped_restore save_async = make_scoped_restore (¤t_ui->async, 0);
|
||||
|
@ -599,9 +597,9 @@ execute_gdb_command (PyObject *self, PyObject *args, PyObject *kw)
|
|||
|
||||
scoped_restore preventer = prevent_dont_repeat ();
|
||||
if (to_string)
|
||||
to_string_res = execute_command_to_string (©[0], from_tty);
|
||||
to_string_res = execute_command_to_string (arg, from_tty);
|
||||
else
|
||||
execute_command (©[0], from_tty);
|
||||
execute_command (arg, from_tty);
|
||||
}
|
||||
CATCH (except, RETURN_MASK_ALL)
|
||||
{
|
||||
|
|
|
@ -2892,7 +2892,7 @@ cmd_record_btrace_bts_start (const char *args, int from_tty)
|
|||
|
||||
TRY
|
||||
{
|
||||
execute_command ((char *) "target record-btrace", from_tty);
|
||||
execute_command ("target record-btrace", from_tty);
|
||||
}
|
||||
CATCH (exception, RETURN_MASK_ALL)
|
||||
{
|
||||
|
@ -2914,7 +2914,7 @@ cmd_record_btrace_pt_start (const char *args, int from_tty)
|
|||
|
||||
TRY
|
||||
{
|
||||
execute_command ((char *) "target record-btrace", from_tty);
|
||||
execute_command ("target record-btrace", from_tty);
|
||||
}
|
||||
CATCH (exception, RETURN_MASK_ALL)
|
||||
{
|
||||
|
@ -2936,7 +2936,7 @@ cmd_record_btrace_start (const char *args, int from_tty)
|
|||
|
||||
TRY
|
||||
{
|
||||
execute_command ((char *) "target record-btrace", from_tty);
|
||||
execute_command ("target record-btrace", from_tty);
|
||||
}
|
||||
CATCH (exception, RETURN_MASK_ALL)
|
||||
{
|
||||
|
@ -2944,7 +2944,7 @@ cmd_record_btrace_start (const char *args, int from_tty)
|
|||
|
||||
TRY
|
||||
{
|
||||
execute_command ((char *) "target record-btrace", from_tty);
|
||||
execute_command ("target record-btrace", from_tty);
|
||||
}
|
||||
CATCH (exception, RETURN_MASK_ALL)
|
||||
{
|
||||
|
|
|
@ -2756,7 +2756,7 @@ record_full_goto_insn (struct record_full_entry *entry,
|
|||
static void
|
||||
cmd_record_full_start (const char *args, int from_tty)
|
||||
{
|
||||
execute_command ((char *) "target record-full", from_tty);
|
||||
execute_command ("target record-full", from_tty);
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
14
gdb/record.c
14
gdb/record.c
|
@ -99,25 +99,25 @@ record_start (const char *method, const char *format, int from_tty)
|
|||
if (method == NULL)
|
||||
{
|
||||
if (format == NULL)
|
||||
execute_command_to_string ((char *) "record", from_tty);
|
||||
execute_command_to_string ("record", from_tty);
|
||||
else
|
||||
error (_("Invalid format."));
|
||||
}
|
||||
else if (strcmp (method, "full") == 0)
|
||||
{
|
||||
if (format == NULL)
|
||||
execute_command_to_string ((char *) "record full", from_tty);
|
||||
execute_command_to_string ("record full", from_tty);
|
||||
else
|
||||
error (_("Invalid format."));
|
||||
}
|
||||
else if (strcmp (method, "btrace") == 0)
|
||||
{
|
||||
if (format == NULL)
|
||||
execute_command_to_string ((char *) "record btrace", from_tty);
|
||||
execute_command_to_string ("record btrace", from_tty);
|
||||
else if (strcmp (format, "bts") == 0)
|
||||
execute_command_to_string ((char *) "record btrace bts", from_tty);
|
||||
execute_command_to_string ("record btrace bts", from_tty);
|
||||
else if (strcmp (format, "pt") == 0)
|
||||
execute_command_to_string ((char *) "record btrace pt", from_tty);
|
||||
execute_command_to_string ("record btrace pt", from_tty);
|
||||
else
|
||||
error (_("Invalid format."));
|
||||
}
|
||||
|
@ -130,7 +130,7 @@ record_start (const char *method, const char *format, int from_tty)
|
|||
void
|
||||
record_stop (int from_tty)
|
||||
{
|
||||
execute_command_to_string ((char *) "record stop", from_tty);
|
||||
execute_command_to_string ("record stop", from_tty);
|
||||
}
|
||||
|
||||
/* See record.h. */
|
||||
|
@ -266,7 +266,7 @@ show_record_debug (struct ui_file *file, int from_tty,
|
|||
static void
|
||||
cmd_record_start (const char *args, int from_tty)
|
||||
{
|
||||
execute_command ((char *) "target record-full", from_tty);
|
||||
execute_command ("target record-full", from_tty);
|
||||
}
|
||||
|
||||
/* Truncate the record log from the present point
|
||||
|
|
|
@ -50,7 +50,7 @@ exec_reverse_once (const char *cmd, const char *args, int from_tty)
|
|||
std::string reverse_command = string_printf ("%s %s", cmd, args ? args : "");
|
||||
scoped_restore restore_exec_dir
|
||||
= make_scoped_restore (&execution_direction, EXEC_REVERSE);
|
||||
execute_command (&reverse_command[0], from_tty);
|
||||
execute_command (reverse_command.c_str (), from_tty);
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
16
gdb/thread.c
16
gdb/thread.c
|
@ -1704,10 +1704,7 @@ thread_apply_all_command (const char *cmd, int from_tty)
|
|||
print_thread_id (thr),
|
||||
target_pid_to_str (inferior_ptid));
|
||||
|
||||
/* Use a copy of the command in case it is clobbered by
|
||||
execute_command. */
|
||||
std::string copy = cmd;
|
||||
execute_command (©[0], from_tty);
|
||||
execute_command (cmd, from_tty);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1717,7 +1714,7 @@ thread_apply_all_command (const char *cmd, int from_tty)
|
|||
static void
|
||||
thread_apply_command (const char *tidlist, int from_tty)
|
||||
{
|
||||
char *cmd = NULL;
|
||||
const char *cmd = NULL;
|
||||
tid_range_parser parser;
|
||||
|
||||
if (tidlist == NULL || *tidlist == '\000')
|
||||
|
@ -1730,7 +1727,7 @@ thread_apply_command (const char *tidlist, int from_tty)
|
|||
|
||||
if (!parser.get_tid_range (&inf_num, &thr_start, &thr_end))
|
||||
{
|
||||
cmd = (char *) parser.cur_tok ();
|
||||
cmd = parser.cur_tok ();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -1741,10 +1738,6 @@ thread_apply_command (const char *tidlist, int from_tty)
|
|||
if (tidlist == cmd || !isalpha (cmd[0]))
|
||||
invalid_thread_id_error (cmd);
|
||||
|
||||
/* Save a copy of the command in case it is clobbered by
|
||||
execute_command. */
|
||||
std::string saved_cmd = cmd;
|
||||
|
||||
scoped_restore_current_thread restore_thread;
|
||||
|
||||
parser.init (tidlist, current_inferior ()->num);
|
||||
|
@ -1798,9 +1791,6 @@ thread_apply_command (const char *tidlist, int from_tty)
|
|||
printf_filtered (_("\nThread %s (%s):\n"), print_thread_id (tp),
|
||||
target_pid_to_str (inferior_ptid));
|
||||
execute_command (cmd, from_tty);
|
||||
|
||||
/* Restore exact command used previously. */
|
||||
strcpy (cmd, saved_cmd.c_str ());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
30
gdb/top.c
30
gdb/top.c
|
@ -237,7 +237,7 @@ ptid_t (*deprecated_target_wait_hook) (ptid_t ptid,
|
|||
things like enabling/disabling buttons, etc... */
|
||||
|
||||
void (*deprecated_call_command_hook) (struct cmd_list_element * c,
|
||||
char *cmd, int from_tty);
|
||||
const char *cmd, int from_tty);
|
||||
|
||||
/* Called when the current thread changes. Argument is thread id. */
|
||||
|
||||
|
@ -539,11 +539,12 @@ set_repeat_arguments (const char *args)
|
|||
Pass FROM_TTY as second argument to the defining function. */
|
||||
|
||||
void
|
||||
execute_command (char *p, int from_tty)
|
||||
execute_command (const char *p, int from_tty)
|
||||
{
|
||||
struct cleanup *cleanup_if_error;
|
||||
struct cmd_list_element *c;
|
||||
char *line;
|
||||
const char *line;
|
||||
const char *cmd_start = p;
|
||||
|
||||
cleanup_if_error = make_bpstat_clear_actions_cleanup ();
|
||||
scoped_value_mark cleanup = prepare_execute_command ();
|
||||
|
@ -566,7 +567,7 @@ execute_command (char *p, int from_tty)
|
|||
if (*p)
|
||||
{
|
||||
const char *cmd = p;
|
||||
char *arg;
|
||||
const char *arg;
|
||||
int was_sync = current_ui->prompt_state == PROMPT_BLOCKED;
|
||||
|
||||
line = p;
|
||||
|
@ -575,11 +576,11 @@ execute_command (char *p, int from_tty)
|
|||
print_command_trace (p);
|
||||
|
||||
c = lookup_cmd (&cmd, cmdlist, "", 0, 1);
|
||||
p = (char *) cmd;
|
||||
p = cmd;
|
||||
|
||||
scoped_restore save_repeat_args
|
||||
= make_scoped_restore (&repeat_arguments, nullptr);
|
||||
char *args_pointer = p;
|
||||
const char *args_pointer = p;
|
||||
|
||||
/* Pass null arg rather than an empty one. */
|
||||
arg = *p ? p : 0;
|
||||
|
@ -594,14 +595,20 @@ execute_command (char *p, int from_tty)
|
|||
is_complete_command hack is testing for. */
|
||||
/* Clear off trailing whitespace, except for set and complete
|
||||
command. */
|
||||
std::string without_whitespace;
|
||||
if (arg
|
||||
&& c->type != set_cmd
|
||||
&& !is_complete_command (c))
|
||||
{
|
||||
p = arg + strlen (arg) - 1;
|
||||
const char *old_end = arg + strlen (arg) - 1;
|
||||
p = old_end;
|
||||
while (p >= arg && (*p == ' ' || *p == '\t'))
|
||||
p--;
|
||||
*(p + 1) = '\0';
|
||||
if (p != old_end)
|
||||
{
|
||||
without_whitespace = std::string (arg, p + 1);
|
||||
arg = without_whitespace.c_str ();
|
||||
}
|
||||
}
|
||||
|
||||
/* If this command has been pre-hooked, run the hook first. */
|
||||
|
@ -629,10 +636,11 @@ execute_command (char *p, int from_tty)
|
|||
/* If this command has been post-hooked, run the hook last. */
|
||||
execute_cmd_post_hook (c);
|
||||
|
||||
if (repeat_arguments != NULL)
|
||||
if (repeat_arguments != NULL && cmd_start == saved_command_line)
|
||||
{
|
||||
gdb_assert (strlen (args_pointer) >= strlen (repeat_arguments));
|
||||
strcpy (args_pointer, repeat_arguments);
|
||||
strcpy (saved_command_line + (args_pointer - cmd_start),
|
||||
repeat_arguments);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -646,7 +654,7 @@ execute_command (char *p, int from_tty)
|
|||
temporarily set to true. */
|
||||
|
||||
std::string
|
||||
execute_command_to_string (char *p, int from_tty)
|
||||
execute_command_to_string (const char *p, int from_tty)
|
||||
{
|
||||
/* GDB_STDOUT should be better already restored during these
|
||||
restoration callbacks. */
|
||||
|
|
|
@ -232,7 +232,7 @@ extern int quit_confirm (void);
|
|||
extern void quit_force (int *, int);
|
||||
extern void quit_command (const char *, int);
|
||||
extern void quit_cover (void);
|
||||
extern void execute_command (char *, int);
|
||||
extern void execute_command (const char *, int);
|
||||
|
||||
/* If the interpreter is in sync mode (we're running a user command's
|
||||
list, running command hooks or similars), and we just ran a
|
||||
|
|
|
@ -499,8 +499,5 @@ _initialize_tui_stack (void)
|
|||
static void
|
||||
tui_update_command (const char *arg, int from_tty)
|
||||
{
|
||||
char cmd[sizeof("frame 0")];
|
||||
|
||||
strcpy (cmd, "frame 0");
|
||||
execute_command (cmd, from_tty);
|
||||
execute_command ("frame 0", from_tty);
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue