Eliminate agent_expr_p; VEC -> std::vector in struct bp_target_info

After the previous patch, we end up with these two types with quite
similar, and potentially confusing names:

  typedef gdb::unique_ptr<agent_expr> agent_expr_up;

  /* Pointer to an agent_expr structure.  */
  typedef struct agent_expr *agent_expr_p;

The latter is only necessary to put agent_expr pointers in VECs.  So
just eliminate it and use std::vector instead.

gdb/ChangeLog:
2016-11-08  Pedro Alves  <palves@redhat.com>

	* ax.h (agent_expr_p): Delete.
	(DEF_VEC_P (agent_expr_p)): Delete.
	* breakpoint.c (build_target_condition_list)
	(build_target_command_list): Adjust to use of std::vector.
	(bp_location_dtor): Remove now unnecessary VEC_free calls.
	* breakpoint.h: Include <vector>.
	(struct bp_target_info) <conditions, tcommands>: Now
	std::vector's.
	* remote.c (remote_add_target_side_condition): bp_tgt->conditions
	is now a std::vector; adjust.
	(remote_add_target_side_commands, remote_insert_breakpoint):
	bp_tgt->tcommands is now a std::vector; adjust.
This commit is contained in:
Pedro Alves 2016-11-08 15:26:47 +00:00
parent 833177a4a5
commit 3cde5c42d1
5 changed files with 46 additions and 43 deletions

View File

@ -1,3 +1,18 @@
2016-11-08 Pedro Alves <palves@redhat.com>
* ax.h (agent_expr_p): Delete.
(DEF_VEC_P (agent_expr_p)): Delete.
* breakpoint.c (build_target_condition_list)
(build_target_command_list): Adjust to use of std::vector.
(bp_location_dtor): Remove now unnecessary VEC_free calls.
* breakpoint.h: Include <vector>.
(struct bp_target_info) <conditions, tcommands>: Now
std::vector's.
* remote.c (remote_add_target_side_condition): bp_tgt->conditions
is now a std::vector; adjust.
(remote_add_target_side_commands, remote_insert_breakpoint):
bp_tgt->tcommands is now a std::vector; adjust.
2016-11-08 Pedro Alves <palves@redhat.com> 2016-11-08 Pedro Alves <palves@redhat.com>
* ax-gdb.c (is_nontrivial_conversion): Use agent_expr_up. * ax-gdb.c (is_nontrivial_conversion): Use agent_expr_up.

View File

@ -170,12 +170,6 @@ struct agent_expr
/* An agent_expr owning pointer. */ /* An agent_expr owning pointer. */
typedef gdb::unique_ptr<agent_expr> agent_expr_up; typedef gdb::unique_ptr<agent_expr> agent_expr_up;
/* Pointer to an agent_expr structure. */
typedef struct agent_expr *agent_expr_p;
/* Vector of pointers to agent expressions. */
DEF_VEC_P (agent_expr_p);
/* The actual values of the various bytecode operations. */ /* The actual values of the various bytecode operations. */
enum agent_op enum agent_op

View File

@ -2298,7 +2298,7 @@ build_target_condition_list (struct bp_location *bl)
struct bp_location *loc; struct bp_location *loc;
/* Release conditions left over from a previous insert. */ /* Release conditions left over from a previous insert. */
VEC_free (agent_expr_p, bl->target_info.conditions); bl->target_info.conditions.clear ();
/* This is only meaningful if the target is /* This is only meaningful if the target is
evaluating conditions and if the user has evaluating conditions and if the user has
@ -2371,10 +2371,11 @@ build_target_condition_list (struct bp_location *bl)
&& loc->pspace->num == bl->pspace->num && loc->pspace->num == bl->pspace->num
&& loc->owner->enable_state == bp_enabled && loc->owner->enable_state == bp_enabled
&& loc->enabled) && loc->enabled)
/* Add the condition to the vector. This will be used later to send the {
conditions to the target. */ /* Add the condition to the vector. This will be used later
VEC_safe_push (agent_expr_p, bl->target_info.conditions, to send the conditions to the target. */
loc->cond_bytecode.get ()); bl->target_info.conditions.push_back (loc->cond_bytecode.get ());
}
} }
return; return;
@ -2481,8 +2482,8 @@ build_target_command_list (struct bp_location *bl)
int modified = bl->needs_update; int modified = bl->needs_update;
struct bp_location *loc; struct bp_location *loc;
/* Release commands left over from a previous insert. */ /* Clear commands left over from a previous insert. */
VEC_free (agent_expr_p, bl->target_info.tcommands); bl->target_info.tcommands.clear ();
if (!target_can_run_breakpoint_commands ()) if (!target_can_run_breakpoint_commands ())
return; return;
@ -2565,10 +2566,11 @@ build_target_command_list (struct bp_location *bl)
&& loc->pspace->num == bl->pspace->num && loc->pspace->num == bl->pspace->num
&& loc->owner->enable_state == bp_enabled && loc->owner->enable_state == bp_enabled
&& loc->enabled) && loc->enabled)
/* Add the command to the vector. This will be used later {
to send the commands to the target. */ /* Add the command to the vector. This will be used later
VEC_safe_push (agent_expr_p, bl->target_info.tcommands, to send the commands to the target. */
loc->cmd_bytecode.get ()); bl->target_info.tcommands.push_back (loc->cmd_bytecode.get ());
}
} }
bl->target_info.persist = 0; bl->target_info.persist = 0;
@ -12888,9 +12890,6 @@ static void
bp_location_dtor (struct bp_location *self) bp_location_dtor (struct bp_location *self)
{ {
xfree (self->function_name); xfree (self->function_name);
VEC_free (agent_expr_p, self->target_info.conditions);
VEC_free (agent_expr_p, self->target_info.tcommands);
} }
static const struct bp_location_ops bp_location_ops = static const struct bp_location_ops bp_location_ops =

View File

@ -26,6 +26,7 @@
#include "command.h" #include "command.h"
#include "break-common.h" #include "break-common.h"
#include "probe.h" #include "probe.h"
#include <vector>
struct value; struct value;
struct block; struct block;
@ -264,13 +265,13 @@ struct bp_target_info
packets. */ packets. */
int kind; int kind;
/* Vector of conditions the target should evaluate if it supports target-side /* Conditions the target should evaluate if it supports target-side
breakpoint conditions. */ breakpoint conditions. These are non-owning pointers. */
VEC(agent_expr_p) *conditions; std::vector<agent_expr *> conditions;
/* Vector of commands the target should evaluate if it supports /* Commands the target should evaluate if it supports target-side
target-side breakpoint commands. */ breakpoint commands. These are non-owning pointers. */
VEC(agent_expr_p) *tcommands; std::vector<agent_expr *> tcommands;
/* Flag that is true if the breakpoint should be left in place even /* Flag that is true if the breakpoint should be left in place even
when GDB is not connected. */ when GDB is not connected. */

View File

@ -9623,10 +9623,7 @@ remote_add_target_side_condition (struct gdbarch *gdbarch,
struct bp_target_info *bp_tgt, char *buf, struct bp_target_info *bp_tgt, char *buf,
char *buf_end) char *buf_end)
{ {
struct agent_expr *aexpr = NULL; if (bp_tgt->conditions.empty ())
int i, ix;
if (VEC_empty (agent_expr_p, bp_tgt->conditions))
return 0; return 0;
buf += strlen (buf); buf += strlen (buf);
@ -9634,13 +9631,13 @@ remote_add_target_side_condition (struct gdbarch *gdbarch,
buf++; buf++;
/* Send conditions to the target and free the vector. */ /* Send conditions to the target and free the vector. */
for (ix = 0; for (int ix = 0; ix < bp_tgt->conditions.size (); ix++)
VEC_iterate (agent_expr_p, bp_tgt->conditions, ix, aexpr);
ix++)
{ {
struct agent_expr *aexpr = bp_tgt->conditions[ix];
xsnprintf (buf, buf_end - buf, "X%x,", aexpr->len); xsnprintf (buf, buf_end - buf, "X%x,", aexpr->len);
buf += strlen (buf); buf += strlen (buf);
for (i = 0; i < aexpr->len; ++i) for (int i = 0; i < aexpr->len; ++i)
buf = pack_hex_byte (buf, aexpr->buf[i]); buf = pack_hex_byte (buf, aexpr->buf[i]);
*buf = '\0'; *buf = '\0';
} }
@ -9651,10 +9648,7 @@ static void
remote_add_target_side_commands (struct gdbarch *gdbarch, remote_add_target_side_commands (struct gdbarch *gdbarch,
struct bp_target_info *bp_tgt, char *buf) struct bp_target_info *bp_tgt, char *buf)
{ {
struct agent_expr *aexpr = NULL; if (bp_tgt->tcommands.empty ())
int i, ix;
if (VEC_empty (agent_expr_p, bp_tgt->tcommands))
return; return;
buf += strlen (buf); buf += strlen (buf);
@ -9664,13 +9658,13 @@ remote_add_target_side_commands (struct gdbarch *gdbarch,
/* Concatenate all the agent expressions that are commands into the /* Concatenate all the agent expressions that are commands into the
cmds parameter. */ cmds parameter. */
for (ix = 0; for (int ix = 0; ix < bp_tgt->tcommands.size (); ix++)
VEC_iterate (agent_expr_p, bp_tgt->tcommands, ix, aexpr);
ix++)
{ {
struct agent_expr *aexpr = bp_tgt->tcommands[ix];
sprintf (buf, "X%x,", aexpr->len); sprintf (buf, "X%x,", aexpr->len);
buf += strlen (buf); buf += strlen (buf);
for (i = 0; i < aexpr->len; ++i) for (int i = 0; i < aexpr->len; ++i)
buf = pack_hex_byte (buf, aexpr->buf[i]); buf = pack_hex_byte (buf, aexpr->buf[i]);
*buf = '\0'; *buf = '\0';
} }
@ -9735,7 +9729,7 @@ remote_insert_breakpoint (struct target_ops *ops,
/* If this breakpoint has target-side commands but this stub doesn't /* If this breakpoint has target-side commands but this stub doesn't
support Z0 packets, throw error. */ support Z0 packets, throw error. */
if (!VEC_empty (agent_expr_p, bp_tgt->tcommands)) if (!bp_tgt->tcommands.empty ())
throw_error (NOT_SUPPORTED_ERROR, _("\ throw_error (NOT_SUPPORTED_ERROR, _("\
Target doesn't support breakpoints that have target side commands.")); Target doesn't support breakpoints that have target side commands."));