From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 15718 invoked by alias); 19 Oct 2016 01:18:10 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 15651 invoked by uid 89); 19 Oct 2016 01:18:09 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.2 required=5.0 tests=BAYES_00,RP_MATCHES_RCVD,SPF_HELO_PASS autolearn=ham version=3.3.2 spammy=Conditions, sprintf, agent X-HELO: mx1.redhat.com Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 19 Oct 2016 01:18:05 +0000 Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 8C34B8553F for ; Wed, 19 Oct 2016 01:12:48 +0000 (UTC) Received: from cascais.lan (ovpn01.gateway.prod.ext.ams2.redhat.com [10.39.146.11]) by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id u9J1CJk1019701 for ; Tue, 18 Oct 2016 21:12:48 -0400 From: Pedro Alves To: gdb-patches@sourceware.org Subject: [PATCH v2 30/31] Eliminate agent_expr_p; VEC -> std::vector in struct bp_target_info Date: Wed, 19 Oct 2016 01:18:00 -0000 Message-Id: <1476839539-8374-31-git-send-email-palves@redhat.com> In-Reply-To: <1476839539-8374-1-git-send-email-palves@redhat.com> References: <1476839539-8374-1-git-send-email-palves@redhat.com> X-SW-Source: 2016-10/txt/msg00548.txt.bz2 After the previous patch, we end up with these two types with quite similar, and potentially confusing names: typedef gdb::unique_ptr 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: yyyy-mm-dd Pedro Alves * 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 . (struct bp_target_info) : 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. --- gdb/ax.h | 6 ------ gdb/breakpoint.c | 27 +++++++++++++-------------- gdb/breakpoint.h | 13 +++++++------ gdb/remote.c | 28 +++++++++++----------------- 4 files changed, 31 insertions(+), 43 deletions(-) diff --git a/gdb/ax.h b/gdb/ax.h index 4b90229..85d2943 100644 --- a/gdb/ax.h +++ b/gdb/ax.h @@ -170,12 +170,6 @@ struct agent_expr /* An agent_expr owning pointer. */ typedef gdb::unique_ptr 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 diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c index 77f551b..37c1dbd 100644 --- a/gdb/breakpoint.c +++ b/gdb/breakpoint.c @@ -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 ()); + { + /* Add the command to the vector. This will be used later + to send the commands to the target. */ + bl->target_info.tcommands.push_back (loc->cmd_bytecode.get ()); + } } bl->target_info.persist = 0; @@ -12867,9 +12869,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 = diff --git a/gdb/breakpoint.h b/gdb/breakpoint.h index 018dddb..bfd6351 100644 --- a/gdb/breakpoint.h +++ b/gdb/breakpoint.h @@ -26,6 +26,7 @@ #include "command.h" #include "break-common.h" #include "probe.h" +#include struct value; struct block; @@ -268,13 +269,13 @@ struct bp_target_info the size to remove the breakpoint safely. */ int placed_size; - /* 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 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 tcommands; /* Flag that is true if the breakpoint should be left in place even when GDB is not connected. */ diff --git a/gdb/remote.c b/gdb/remote.c index 294d928..d090dc1 100644 --- a/gdb/remote.c +++ b/gdb/remote.c @@ -9193,10 +9193,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); @@ -9204,13 +9201,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'; } @@ -9221,10 +9218,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); @@ -9234,13 +9228,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'; } @@ -9309,7 +9303,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.")); -- 2.5.5