aboutsummaryrefslogtreecommitdiff
path: root/gdb/parse.c
diff options
context:
space:
mode:
authorKeith Seitz <keiths@redhat.com>2013-03-12 17:39:45 +0000
committerKeith Seitz <keiths@redhat.com>2013-03-12 17:39:45 +0000
commitbbc13ae3db19a3276ba029c838682f81d10f859a (patch)
tree6f945cef75dd5228c35ff9a554d1d99b28f18d31 /gdb/parse.c
parentf3cec7e61fc4cf16cf150f9e967e6fc9dbbd7207 (diff)
downloadgdb-bbc13ae3db19a3276ba029c838682f81d10f859a.zip
gdb-bbc13ae3db19a3276ba029c838682f81d10f859a.tar.gz
gdb-bbc13ae3db19a3276ba029c838682f81d10f859a.tar.bz2
* 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.
Diffstat (limited to 'gdb/parse.c')
-rw-r--r--gdb/parse.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/gdb/parse.c b/gdb/parse.c
index 09c378b..4c84b2b 100644
--- a/gdb/parse.c
+++ b/gdb/parse.c
@@ -1125,10 +1125,18 @@ prefixify_subexp (struct expression *inexpr,
If COMMA is nonzero, stop if a comma is reached. */
struct expression *
-parse_exp_1 (char **stringptr, CORE_ADDR pc, const struct block *block,
+parse_exp_1 (const char **stringptr, CORE_ADDR pc, const struct block *block,
int comma)
{
- return parse_exp_in_context (stringptr, pc, block, comma, 0, NULL);
+ struct expression *expr;
+ char *const_hack = *stringptr ? xstrdup (*stringptr) : NULL;
+ char *orig = const_hack;
+ struct cleanup *back_to = make_cleanup (xfree, const_hack);
+
+ expr = parse_exp_in_context (&const_hack, pc, block, comma, 0, NULL);
+ (*stringptr) += const_hack - orig;
+ do_cleanups (back_to);
+ return expr;
}
/* As for parse_exp_1, except that if VOID_CONTEXT_P, then
@@ -1264,7 +1272,7 @@ parse_exp_in_context (char **stringptr, CORE_ADDR pc, const struct block *block,
to use up all of the contents of STRING. */
struct expression *
-parse_expression (char *string)
+parse_expression (const char *string)
{
struct expression *exp;