From 2ed1c04f8d7c53405eead13f9f11c7478c3ee411 Mon Sep 17 00:00:00 2001 From: Keith Seitz Date: Tue, 12 Mar 2013 17:39:39 +0000 Subject: * ada-lang.c (ada_read_renaming_var_value): Pass const pointer to expression string to parse_exp_1. (create_excep_cond_exprs): Likewise. * ax-gdb.c (agent_eval_command_one): Likewise. (maint_agent_printf_command): Likewise. Constify much of the string handling/parsing. * breakpoint.c (set_breakpoint_condition): Pass const pointer to expression string to parse_exp_1. (update_watchpoint): Likewise. (parse_cmd_to_aexpr): Constify string handling. Pass const pointer to parse_exp_1. (init_breakpoint_sal): Pass const pointer to parse_exp_1. (find_condition_and_thread): Likewise. Make TOK const. (watch_command_1): Make "arg" const. Constify string handling. Copy the expression string instead of changing the input string. (update_breakpoint_location): Pass const pointer to parse_exp_1. * eval.c (parse_and_eval_address): Make "exp" const. (parse_to_comma_and_eval): Make "expp" const. (parse_and_eval): Make "exp" const. * expression.h (parse_expression): Make argument const. (parse_exp_1): Make first argument const. * findcmd.c (parse_find_args): Treat "args" as const. * linespec.c (parse_linespec): Pass const pointer to linespec_expression_to_pc. (linespec_expression_to_pc): Make "exp_ptr" const. * parse.c (parse_exp_1): Make "stringptr" const. Make a copy of the expression to pass to parse_exp_in_context until this whole interface can be constified. (parse_expression): Make "string" const. * printcmd.c (ui_printf): Treat "arg" as const. Handle const strings. * tracepoint.c (validate_actionline): Pass const pointer to all calls to parse_exp_1. (encode_actions_1): Likewise. * value.h (parse_to_comma_and_eval): Make argument const. (parse_and_eval_address): Likewise. (parse_and_eval): Likewise. * varobj.c (varobj_create): Pass const pointer to parse_exp_1. (varobj_set_value): Likewise. * cli/cli-cmds.c (disassemble_command): Treat "arg" as const and constify string handling. Pass const pointers to parse_and_eval_address and parse_to_comman_and_eval. * cli/cli-utils.c (skip_to_space): Rename to ... (skip_to_space_const): ... this. Handle const strings. * cli/cli-utils.h (skip_to_space): Turn into macro which invokes skip_to_space_const. (skip_to_space_const): Declare. * common/format.c (parse_format_string): Make "arg" const. Handle const strings. * common/format.h (parse_format_string): Make "arg" const. * gdbserver/ax.c (ax_printf): Make "format" const. * python/python.c (gdbpy_parse_and_eval): Do not make a copy of the expression string. --- gdb/ax-gdb.c | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) (limited to 'gdb/ax-gdb.c') diff --git a/gdb/ax-gdb.c b/gdb/ax-gdb.c index 066826eaeca..74824d373ad 100644 --- a/gdb/ax-gdb.c +++ b/gdb/ax-gdb.c @@ -2608,6 +2608,7 @@ agent_eval_command_one (char *exp, int eval, CORE_ADDR pc) struct cleanup *old_chain = 0; struct expression *expr; struct agent_expr *agent; + const char *arg; if (!eval) { @@ -2616,14 +2617,15 @@ agent_eval_command_one (char *exp, int eval, CORE_ADDR pc) exp = decode_agent_options (exp); } - if (!eval && strcmp (exp, "$_ret") == 0) + arg = exp; + if (!eval && strcmp (arg, "$_ret") == 0) { agent = gen_trace_for_return_address (pc, get_current_arch ()); old_chain = make_cleanup_free_agent_expr (agent); } else { - expr = parse_exp_1 (&exp, pc, block_for_pc (pc), 0); + expr = parse_exp_1 (&arg, pc, block_for_pc (pc), 0); old_chain = make_cleanup (free_current_contents, &expr); if (eval) agent = gen_eval_for_expr (pc, expr); @@ -2716,8 +2718,8 @@ maint_agent_printf_command (char *exp, int from_tty) struct expression *argvec[100]; struct agent_expr *agent; struct frame_info *fi = get_current_frame (); /* need current scope */ - char *cmdrest; - char *format_start, *format_end; + const char *cmdrest; + const char *format_start, *format_end; struct format_piece *fpieces; int nargs; @@ -2733,7 +2735,7 @@ maint_agent_printf_command (char *exp, int from_tty) cmdrest = exp; - cmdrest = skip_spaces (cmdrest); + cmdrest = skip_spaces_const (cmdrest); if (*cmdrest++ != '"') error (_("Must start with a format string.")); @@ -2749,19 +2751,19 @@ maint_agent_printf_command (char *exp, int from_tty) if (*cmdrest++ != '"') error (_("Bad format string, non-terminated '\"'.")); - cmdrest = skip_spaces (cmdrest); + cmdrest = skip_spaces_const (cmdrest); if (*cmdrest != ',' && *cmdrest != 0) error (_("Invalid argument syntax")); if (*cmdrest == ',') cmdrest++; - cmdrest = skip_spaces (cmdrest); + cmdrest = skip_spaces_const (cmdrest); nargs = 0; while (*cmdrest != '\0') { - char *cmd1; + const char *cmd1; cmd1 = cmdrest; expr = parse_exp_1 (&cmd1, 0, (struct block *) 0, 1); -- cgit v1.2.1