From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 99900 invoked by alias); 20 Jul 2017 16:58:35 -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 99826 invoked by uid 89); 20 Jul 2017 16:58:34 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-26.9 required=5.0 tests=BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,RP_MATCHES_RCVD,SPF_HELO_PASS autolearn=ham version=3.3.2 spammy=sergio 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; Thu, 20 Jul 2017 16:58:33 +0000 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id C294C4E4D2; Thu, 20 Jul 2017 16:58:31 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com C294C4E4D2 Authentication-Results: ext-mx09.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx09.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=sergiodj@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com C294C4E4D2 Received: from localhost (unused-10-15-17-193.yyz.redhat.com [10.15.17.193]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 98CC06BF6D; Thu, 20 Jul 2017 16:58:31 +0000 (UTC) From: Sergio Durigan Junior To: Tom Tromey Cc: gdb-patches@sourceware.org Subject: Re: [RFA v2 4/4] Use std::vector in struct catch_syscall_inferior_data References: <20170719203225.6714-1-tom@tromey.com> <20170719203225.6714-5-tom@tromey.com> Date: Thu, 20 Jul 2017 16:58:00 -0000 In-Reply-To: <20170719203225.6714-5-tom@tromey.com> (Tom Tromey's message of "Wed, 19 Jul 2017 14:32:25 -0600") Message-ID: <87pocvkpu1.fsf@redhat.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-IsSubscribed: yes X-SW-Source: 2017-07/txt/msg00298.txt.bz2 On Wednesday, July 19 2017, Tom Tromey wrote: > This changes struct catch_syscall_inferior_data to use a std::vector > rather than a VEC. It also changes it to be allocated with new and > destroyed with delete. Thanks for the patch, Tom :-). > 2017-07-18 Tom Tromey > > * break-catch-syscall.c (struct catch_syscall_inferior_data) > : Now a std::vector. > (get_catch_syscall_inferior_data): Use "new". > (catch_syscall_inferior_data_cleanup): Use "delete". > (insert_catch_syscall, remove_catch_syscall) > (clear_syscall_counts): Update. > --- > gdb/ChangeLog | 9 +++++++++ > gdb/break-catch-syscall.c | 47 ++++++++++++++++------------------------------- > 2 files changed, 25 insertions(+), 31 deletions(-) > > diff --git a/gdb/ChangeLog b/gdb/ChangeLog > index fb953ed..4372853 100644 > --- a/gdb/ChangeLog > +++ b/gdb/ChangeLog > @@ -1,3 +1,12 @@ > +2017-07-18 Tom Tromey > + > + * break-catch-syscall.c (struct catch_syscall_inferior_data) > + : Now a std::vector. > + (get_catch_syscall_inferior_data): Use "new". > + (catch_syscall_inferior_data_cleanup): Use "delete". > + (insert_catch_syscall, remove_catch_syscall) > + (clear_syscall_counts): Update. > + > 2017-07-17 Tom Tromey > > * break-catch-syscall.c (syscall_catchpoint) > diff --git a/gdb/break-catch-syscall.c b/gdb/break-catch-syscall.c > index ff0cb69..3df358b 100644 > --- a/gdb/break-catch-syscall.c > +++ b/gdb/break-catch-syscall.c > @@ -54,14 +54,14 @@ struct catch_syscall_inferior_data > int any_syscall_count; > > /* Count of each system call. */ > - VEC(int) *syscalls_counts; > + std::vector syscalls_counts; > > /* This counts all syscall catch requests, so we can readily determine > if any catching is necessary. */ > int total_syscalls_count; > }; > > -static struct catch_syscall_inferior_data* > +static struct catch_syscall_inferior_data * > get_catch_syscall_inferior_data (struct inferior *inf) > { > struct catch_syscall_inferior_data *inf_data; > @@ -70,7 +70,7 @@ get_catch_syscall_inferior_data (struct inferior *inf) > inferior_data (inf, catch_syscall_inferior_data)); > if (inf_data == NULL) > { > - inf_data = XCNEW (struct catch_syscall_inferior_data); > + inf_data = new struct catch_syscall_inferior_data (); > set_inferior_data (inf, catch_syscall_inferior_data, inf_data); > } > > @@ -80,7 +80,9 @@ get_catch_syscall_inferior_data (struct inferior *inf) > static void > catch_syscall_inferior_data_cleanup (struct inferior *inf, void *arg) > { > - xfree (arg); > + struct catch_syscall_inferior_data *inf_data > + = (struct catch_syscall_inferior_data *) arg; > + delete inf_data; Are we still using the "newline between variable declaration and code" rule? > } > > > @@ -104,31 +106,17 @@ insert_catch_syscall (struct bp_location *bl) > { > int elem; > > - if (iter >= VEC_length (int, inf_data->syscalls_counts)) > - { > - int old_size = VEC_length (int, inf_data->syscalls_counts); > - uintptr_t vec_addr_offset > - = old_size * ((uintptr_t) sizeof (int)); > - uintptr_t vec_addr; > - VEC_safe_grow (int, inf_data->syscalls_counts, iter + 1); > - vec_addr = ((uintptr_t) VEC_address (int, > - inf_data->syscalls_counts) > - + vec_addr_offset); > - memset ((void *) vec_addr, 0, > - (iter + 1 - old_size) * sizeof (int)); > - } > - elem = VEC_index (int, inf_data->syscalls_counts, iter); > - VEC_replace (int, inf_data->syscalls_counts, iter, ++elem); > + if (iter >= inf_data->syscalls_counts.size ()) > + inf_data->syscalls_counts.resize (iter + 1); > + ++inf_data->syscalls_counts[iter]; Great simplification. > } > } > > return target_set_syscall_catchpoint (ptid_get_pid (inferior_ptid), > inf_data->total_syscalls_count != 0, > inf_data->any_syscall_count, > - VEC_length (int, > - inf_data->syscalls_counts), > - VEC_address (int, > - inf_data->syscalls_counts)); > + inf_data->syscalls_counts.size (), > + inf_data->syscalls_counts.data ()); > } > > /* Implement the "remove" breakpoint_ops method for syscall > @@ -150,21 +138,18 @@ remove_catch_syscall (struct bp_location *bl, enum remove_bp_reason reason) > for (int iter : c->syscalls_to_be_caught) > { > int elem; > - if (iter >= VEC_length (int, inf_data->syscalls_counts)) > + if (iter >= inf_data->syscalls_counts.size ()) > /* Shouldn't happen. */ > continue; > - elem = VEC_index (int, inf_data->syscalls_counts, iter); > - VEC_replace (int, inf_data->syscalls_counts, iter, --elem); > + --inf_data->syscalls_counts[iter]; > } > } > > return target_set_syscall_catchpoint (ptid_get_pid (inferior_ptid), > inf_data->total_syscalls_count != 0, > inf_data->any_syscall_count, > - VEC_length (int, > - inf_data->syscalls_counts), > - VEC_address (int, > - inf_data->syscalls_counts)); > + inf_data->syscalls_counts.size (), > + inf_data->syscalls_counts.data ()); > } > > /* Implement the "breakpoint_hit" breakpoint_ops method for syscall > @@ -628,7 +613,7 @@ clear_syscall_counts (struct inferior *inf) > > inf_data->total_syscalls_count = 0; > inf_data->any_syscall_count = 0; > - VEC_free (int, inf_data->syscalls_counts); > + inf_data->syscalls_counts.clear (); > } > > static void > -- > 2.9.3 LGTM. Thanks, -- Sergio GPG key ID: 237A 54B1 0287 28BF 00EF 31F4 D0EB 7628 65FC 5E36 Please send encrypted e-mail if possible http://sergiodj.net/