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:
parent
833177a4a5
commit
3cde5c42d1
|
@ -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>
|
||||
|
||||
* ax-gdb.c (is_nontrivial_conversion): Use agent_expr_up.
|
||||
|
|
6
gdb/ax.h
6
gdb/ax.h
|
@ -170,12 +170,6 @@ struct agent_expr
|
|||
/* An agent_expr owning pointer. */
|
||||
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. */
|
||||
|
||||
enum agent_op
|
||||
|
|
|
@ -2298,7 +2298,7 @@ build_target_condition_list (struct bp_location *bl)
|
|||
struct bp_location *loc;
|
||||
|
||||
/* 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
|
||||
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->owner->enable_state == bp_enabled
|
||||
&& loc->enabled)
|
||||
/* Add the condition to the vector. This will be used later to send the
|
||||
conditions to the target. */
|
||||
VEC_safe_push (agent_expr_p, bl->target_info.conditions,
|
||||
loc->cond_bytecode.get ());
|
||||
{
|
||||
/* Add the condition to the vector. This will be used later
|
||||
to send the conditions to the target. */
|
||||
bl->target_info.conditions.push_back (loc->cond_bytecode.get ());
|
||||
}
|
||||
}
|
||||
|
||||
return;
|
||||
|
@ -2481,8 +2482,8 @@ build_target_command_list (struct bp_location *bl)
|
|||
int modified = bl->needs_update;
|
||||
struct bp_location *loc;
|
||||
|
||||
/* Release commands left over from a previous insert. */
|
||||
VEC_free (agent_expr_p, bl->target_info.tcommands);
|
||||
/* Clear commands left over from a previous insert. */
|
||||
bl->target_info.tcommands.clear ();
|
||||
|
||||
if (!target_can_run_breakpoint_commands ())
|
||||
return;
|
||||
|
@ -2565,10 +2566,11 @@ build_target_command_list (struct bp_location *bl)
|
|||
&& loc->pspace->num == bl->pspace->num
|
||||
&& loc->owner->enable_state == bp_enabled
|
||||
&& loc->enabled)
|
||||
{
|
||||
/* Add the command to the vector. This will be used later
|
||||
to send the commands to the target. */
|
||||
VEC_safe_push (agent_expr_p, bl->target_info.tcommands,
|
||||
loc->cmd_bytecode.get ());
|
||||
bl->target_info.tcommands.push_back (loc->cmd_bytecode.get ());
|
||||
}
|
||||
}
|
||||
|
||||
bl->target_info.persist = 0;
|
||||
|
@ -12888,9 +12890,6 @@ static void
|
|||
bp_location_dtor (struct bp_location *self)
|
||||
{
|
||||
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 =
|
||||
|
|
|
@ -26,6 +26,7 @@
|
|||
#include "command.h"
|
||||
#include "break-common.h"
|
||||
#include "probe.h"
|
||||
#include <vector>
|
||||
|
||||
struct value;
|
||||
struct block;
|
||||
|
@ -264,13 +265,13 @@ struct bp_target_info
|
|||
packets. */
|
||||
int kind;
|
||||
|
||||
/* Vector of conditions the target should evaluate if it supports target-side
|
||||
breakpoint conditions. */
|
||||
VEC(agent_expr_p) *conditions;
|
||||
/* Conditions the target should evaluate if it supports target-side
|
||||
breakpoint conditions. These are non-owning pointers. */
|
||||
std::vector<agent_expr *> conditions;
|
||||
|
||||
/* Vector of commands the target should evaluate if it supports
|
||||
target-side breakpoint commands. */
|
||||
VEC(agent_expr_p) *tcommands;
|
||||
/* Commands the target should evaluate if it supports target-side
|
||||
breakpoint commands. These are non-owning pointers. */
|
||||
std::vector<agent_expr *> tcommands;
|
||||
|
||||
/* Flag that is true if the breakpoint should be left in place even
|
||||
when GDB is not connected. */
|
||||
|
|
28
gdb/remote.c
28
gdb/remote.c
|
@ -9623,10 +9623,7 @@ remote_add_target_side_condition (struct gdbarch *gdbarch,
|
|||
struct bp_target_info *bp_tgt, char *buf,
|
||||
char *buf_end)
|
||||
{
|
||||
struct agent_expr *aexpr = NULL;
|
||||
int i, ix;
|
||||
|
||||
if (VEC_empty (agent_expr_p, bp_tgt->conditions))
|
||||
if (bp_tgt->conditions.empty ())
|
||||
return 0;
|
||||
|
||||
buf += strlen (buf);
|
||||
|
@ -9634,13 +9631,13 @@ remote_add_target_side_condition (struct gdbarch *gdbarch,
|
|||
buf++;
|
||||
|
||||
/* Send conditions to the target and free the vector. */
|
||||
for (ix = 0;
|
||||
VEC_iterate (agent_expr_p, bp_tgt->conditions, ix, aexpr);
|
||||
ix++)
|
||||
for (int ix = 0; ix < bp_tgt->conditions.size (); ix++)
|
||||
{
|
||||
struct agent_expr *aexpr = bp_tgt->conditions[ix];
|
||||
|
||||
xsnprintf (buf, buf_end - buf, "X%x,", aexpr->len);
|
||||
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 = '\0';
|
||||
}
|
||||
|
@ -9651,10 +9648,7 @@ static void
|
|||
remote_add_target_side_commands (struct gdbarch *gdbarch,
|
||||
struct bp_target_info *bp_tgt, char *buf)
|
||||
{
|
||||
struct agent_expr *aexpr = NULL;
|
||||
int i, ix;
|
||||
|
||||
if (VEC_empty (agent_expr_p, bp_tgt->tcommands))
|
||||
if (bp_tgt->tcommands.empty ())
|
||||
return;
|
||||
|
||||
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
|
||||
cmds parameter. */
|
||||
for (ix = 0;
|
||||
VEC_iterate (agent_expr_p, bp_tgt->tcommands, ix, aexpr);
|
||||
ix++)
|
||||
for (int ix = 0; ix < bp_tgt->tcommands.size (); ix++)
|
||||
{
|
||||
struct agent_expr *aexpr = bp_tgt->tcommands[ix];
|
||||
|
||||
sprintf (buf, "X%x,", aexpr->len);
|
||||
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 = '\0';
|
||||
}
|
||||
|
@ -9735,7 +9729,7 @@ remote_insert_breakpoint (struct target_ops *ops,
|
|||
|
||||
/* If this breakpoint has target-side commands but this stub doesn't
|
||||
support Z0 packets, throw error. */
|
||||
if (!VEC_empty (agent_expr_p, bp_tgt->tcommands))
|
||||
if (!bp_tgt->tcommands.empty ())
|
||||
throw_error (NOT_SUPPORTED_ERROR, _("\
|
||||
Target doesn't support breakpoints that have target side commands."));
|
||||
|
||||
|
|
Loading…
Reference in New Issue