From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 64767 invoked by alias); 13 Dec 2019 15:11:13 -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 64756 invoked by uid 89); 13 Dec 2019 15:11:13 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-29.1 required=5.0 tests=AWL,BAYES_00,ENV_AND_HDR_SPF_MATCH,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,HTML_MESSAGE,KAM_STOCKGEN,RCVD_IN_DNSWL_NONE,SPF_PASS,USER_IN_DEF_SPF_WL autolearn=ham version=3.3.1 spammy=HX-Received:22e2, H*c:alternative X-HELO: mail-ot1-f65.google.com Received: from mail-ot1-f65.google.com (HELO mail-ot1-f65.google.com) (209.85.210.65) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Fri, 13 Dec 2019 15:11:11 +0000 Received: by mail-ot1-f65.google.com with SMTP id i4so6828849otr.3 for ; Fri, 13 Dec 2019 07:11:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=7mJ4JcwCV/l7KPw1/dk6fwiTNjNL75g49HAuIO/33Ak=; b=wBOaTsH5Ni21ECGDa12KqzGxnieVYtgoS7amq/oAYmxlhysqe3LzxS8kW//cvm9Qdg JIJebAbn9UH9sGAitKEqqOM4AMfGMr72DYHXk6inGRjOKmQ0Wn0rqcWZTseKZ5svh1Yl LeiKmeuGhTuouPQkcpv3z4gUKjREyQXIglpvQnsBYtnN7DzfPdL0XI/TtAYJICmYr3pQ dmndRHOiTcbvkwNCq2cgJ3AaVu+GMUlPxEp1DbGUqd37eonUh3bTUWji1o3qORy0TOvt IrsI8LJ7kyPethE6nJAnaY9xclwsGWUS0YaTlmr6m/Sdu57un3681RUyYvKaLN9rpRXp U0Fg== MIME-Version: 1.0 References: <20191213060323.1799590-1-simon.marchi@polymtl.ca> <20191213060323.1799590-7-simon.marchi@polymtl.ca> In-Reply-To: <20191213060323.1799590-7-simon.marchi@polymtl.ca> From: "Christian Biesinger via gdb-patches" Reply-To: Christian Biesinger Date: Fri, 13 Dec 2019 15:11:00 -0000 Message-ID: Subject: Re: [PATCH 6/7] jit: c++-ify gdb_block To: Simon Marchi Cc: gdb-patches Content-Type: text/plain; charset="UTF-8" X-IsSubscribed: yes X-SW-Source: 2019-12/txt/msg00595.txt.bz2 On Fri, Dec 13, 2019, 01:04 Simon Marchi wrote: > Add a constructor to gdb_block, change the name field to be a > gdb::unique_xmalloc_ptr. > > gdb/ChangeLog: > > * jit.c (struct gdb_block): Add constructor, initialize > real_block field. > (struct gdb_symtab) <~gdb_symtab>: Free blocks with delete. > (jit_block_open_impl): Use gdb_block constructor. > (finalize_symtab): Adjust to gdb::unique_xmalloc_ptr. > --- > gdb/jit.c | 28 +++++++++++++--------------- > 1 file changed, 13 insertions(+), 15 deletions(-) > > diff --git a/gdb/jit.c b/gdb/jit.c > index 1f6de6796e10..56a51f04eb2f 100644 > --- a/gdb/jit.c > +++ b/gdb/jit.c > @@ -428,20 +428,28 @@ jit_read_code_entry (struct gdbarch *gdbarch, > > struct gdb_block > { > + gdb_block (gdb_block *parent, CORE_ADDR begin, CORE_ADDR end, > + const char *name) > + : parent (parent), > + begin (begin), > + end (end), > + name (name != nullptr ? xstrdup (name) : nullptr) > + {} > + > /* The parent of this block. */ > struct gdb_block *parent; > > /* Points to the "real" block that is being built out of this > instance. This block will be added to a blockvector, which will > then be added to a symtab. */ > - struct block *real_block; > + struct block *real_block = nullptr; > > /* The first and last code address corresponding to this block. */ > CORE_ADDR begin, end; > > /* The name of this block (if any). If this is non-NULL, the > FUNCTION symbol symbol is set to this value. */ > - const char *name; > + gdb::unique_xmalloc_ptr name; > }; > > /* Proxy object for building a symtab. */ > @@ -455,10 +463,7 @@ struct gdb_symtab > ~gdb_symtab () > { > for (gdb_block *gdb_block_iter : this->blocks) > - { > - xfree ((void *) gdb_block_iter->name); > - xfree (gdb_block_iter); > - } > + delete gdb_block_iter; > } > Have you considered making this a vector of unique_ptrs, so you don't have to manually delete them? > /* The list of blocks in this symtab. These will eventually be > @@ -534,16 +539,9 @@ jit_block_open_impl (struct gdb_symbol_callbacks *cb, > struct gdb_symtab *symtab, struct gdb_block *parent, > GDB_CORE_ADDR begin, GDB_CORE_ADDR end, const char > *name) > { > - struct gdb_block *block = XCNEW (struct gdb_block); > - > - block->begin = (CORE_ADDR) begin; > - block->end = (CORE_ADDR) end; > - block->name = name ? xstrdup (name) : NULL; > - block->parent = parent; > - > /* Place the block at the end of the vector, it will be sorted when the > symtab is finalized. */ > - symtab->blocks.push_back (block); > + symtab->blocks.push_back (new gdb_block (parent, begin, end, name)); > return symtab->blocks.back (); > } > > @@ -665,7 +663,7 @@ finalize_symtab (struct gdb_symtab *stab, struct > objfile *objfile) > SYMBOL_BLOCK_VALUE (block_name) = new_block; > > block_name->name = obstack_strdup (&objfile->objfile_obstack, > - gdb_block_iter->name); > + gdb_block_iter->name.get ()); > > BLOCK_FUNCTION (new_block) = block_name; > > -- > 2.24.1 > >