From patchwork Fri Dec 13 06:03:22 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Marchi X-Patchwork-Id: 36831 Received: (qmail 86275 invoked by alias); 13 Dec 2019 06:03:36 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 86174 invoked by uid 89); 13 Dec 2019 06:03:35 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-17.4 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, KAM_STOCKGEN, RCVD_IN_DNSWL_NONE, SPF_SOFTFAIL autolearn=ham version=3.3.1 spammy=HContent-Transfer-Encoding:8bit X-HELO: barracuda.ebox.ca Received: from barracuda.ebox.ca (HELO barracuda.ebox.ca) (96.127.255.19) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Fri, 13 Dec 2019 06:03:33 +0000 Received: from smtp.ebox.ca (smtp.ebox.ca [96.127.255.82]) by barracuda.ebox.ca with ESMTP id 9zLGXVia235ydqRi (version=TLSv1 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Fri, 13 Dec 2019 01:03:31 -0500 (EST) Received: from simark.lan (unknown [192.222.164.54]) by smtp.ebox.ca (Postfix) with ESMTP id 98DDA441B21; Fri, 13 Dec 2019 01:03:31 -0500 (EST) From: Simon Marchi To: gdb-patches@sourceware.org Cc: Simon Marchi Subject: [PATCH 6/7] jit: c++-ify gdb_block Date: Fri, 13 Dec 2019 01:03:22 -0500 Message-Id: <20191213060323.1799590-7-simon.marchi@polymtl.ca> In-Reply-To: <20191213060323.1799590-1-simon.marchi@polymtl.ca> References: <20191213060323.1799590-1-simon.marchi@polymtl.ca> MIME-Version: 1.0 X-IsSubscribed: yes 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. : 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; } /* 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;