Cleanup free_agent_expr cleanups.

This commit is contained in:
Andrew Cagney 2000-05-15 06:15:27 +00:00
parent 4d6140d95e
commit f23d52e0a5
5 changed files with 28 additions and 6 deletions

View file

@ -1,3 +1,13 @@
Mon May 15 16:05:46 2000 Andrew Cagney <cagney@b1.cygnus.com>
* ax.h (make_cleanup_free_agent_expr): Add declaration.
* ax-general.c (do_free_agent_expr_cleanup):
(make_cleanup_free_agent_expr): New functions.
* tracepoint.c (validate_actionline, encode_actions), ax-gdb.c
(expr_to_agent, gen_trace_for_expr, agent_command): Replace calls
to make_cleanup.
Mon May 15 14:06:23 2000 Andrew Cagney <cagney@b1.cygnus.com>
* breakpoint.h (make_cleanup_delete_breakpoint,

View file

@ -1798,7 +1798,7 @@ expr_to_agent (expr, value)
struct agent_expr *ax = new_agent_expr (0);
union exp_element *pc;
old_chain = make_cleanup ((make_cleanup_func) free_agent_expr, ax);
old_chain = make_cleanup_free_agent_expr (ax);
pc = expr->elts;
trace_kludge = 0;
@ -1854,7 +1854,7 @@ gen_trace_for_expr (scope, expr)
union exp_element *pc;
struct axs_value value;
old_chain = make_cleanup ((make_cleanup_func) free_agent_expr, ax);
old_chain = make_cleanup_free_agent_expr (ax);
pc = expr->elts;
trace_kludge = 1;
@ -1925,7 +1925,7 @@ agent_command (exp, from_tty)
expr = parse_expression (exp);
old_chain = make_cleanup (free_current_contents, &expr);
agent = gen_trace_for_expr (fi->pc, expr);
make_cleanup ((make_cleanup_func) free_agent_expr, agent);
make_cleanup_free_agent_expr (agent);
ax_print (gdb_stdout, agent);
/* It would be nice to call ax_reqs here to gather some general info

View file

@ -62,6 +62,18 @@ free_agent_expr (x)
free (x);
}
static void
do_free_agent_expr_cleanup (void *x)
{
free_agent_expr (x);
}
struct cleanup *
make_cleanup_free_agent_expr (struct agent_expr *x)
{
return make_cleanup (do_free_agent_expr_cleanup, x);
}
/* Make sure that X has room for at least N more bytes. This doesn't
affect the length, just the allocated size. */

View file

@ -143,6 +143,7 @@ extern struct agent_expr *new_agent_expr PARAMS ((CORE_ADDR));
/* Free a agent expression. */
extern void free_agent_expr PARAMS ((struct agent_expr *));
extern struct cleanup *make_cleanup_free_agent_expr (struct agent_expr *);
/* Append a simple operator OP to EXPR. */
extern void ax_simple PARAMS ((struct agent_expr * EXPR, enum agent_op OP));

View file

@ -999,7 +999,7 @@ validate_actionline (line, t)
/* we have something to collect, make sure that the expr to
bytecode translator can handle it and that it's not too long */
aexpr = gen_trace_for_expr (t->address, exp);
(void) make_cleanup ((make_cleanup_func) free_agent_expr, aexpr);
make_cleanup_free_agent_expr (aexpr);
if (aexpr->len > MAX_AGENT_EXPR_LEN)
error ("expression too complicated, try simplifying");
@ -1617,8 +1617,7 @@ encode_actions (t, tdp_actions, stepping_actions)
default: /* full-fledged expression */
aexpr = gen_trace_for_expr (t->address, exp);
old_chain1 = make_cleanup ((make_cleanup_func)
free_agent_expr, aexpr);
old_chain1 = make_cleanup_free_agent_expr (aexpr);
ax_reqs (aexpr, &areqs);
if (areqs.flaw != agent_flaw_none)