From patchwork Fri Dec 13 06:03:21 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Marchi X-Patchwork-Id: 36830 Received: (qmail 86005 invoked by alias); 13 Dec 2019 06:03:34 -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 85930 invoked by uid 89); 13 Dec 2019 06:03:33 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-18.1 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_NONE, SPF_SOFTFAIL autolearn=ham version=3.3.1 spammy=HX-Languages-Length:1791, 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:32 +0000 Received: from smtp.ebox.ca (smtp.ebox.ca [96.127.255.82]) by barracuda.ebox.ca with ESMTP id yRFrFz7lvmivQHnW (version=TLSv1 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Fri, 13 Dec 2019 01:03:30 -0500 (EST) Received: from simark.lan (unknown [192.222.164.54]) by smtp.ebox.ca (Postfix) with ESMTP id 5FEF6441B21; Fri, 13 Dec 2019 01:03:30 -0500 (EST) From: Simon Marchi To: gdb-patches@sourceware.org Cc: Simon Marchi Subject: [PATCH 5/7] jit: make gdb_object::symtabs a vector of unique_ptr Date: Fri, 13 Dec 2019 01:03:21 -0500 Message-Id: <20191213060323.1799590-6-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 This makes the gdb_object hold everything. When it gets destroyed, all contained symtabs and contained blocks get destroyed. gdb/ChangeLog: * jit.c (struct gdb_object) : Change type to std::vector>. (jit_symtab_open_impl): Adjust. (jit_object_close_impl): Adjust. --- gdb/jit.c | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/gdb/jit.c b/gdb/jit.c index bb855e09f59b..1f6de6796e10 100644 --- a/gdb/jit.c +++ b/gdb/jit.c @@ -476,7 +476,7 @@ struct gdb_symtab struct gdb_object { - std::vector symtabs; + std::vector> symtabs; }; /* The type of the `private' data passed around by the callback @@ -521,9 +521,8 @@ jit_symtab_open_impl (struct gdb_symbol_callbacks *cb, { /* CB stays unused. See comment in jit_object_open_impl. */ - gdb_symtab *symtab = new gdb_symtab (file_name); - object->symtabs.push_back (symtab); - return symtab; + object->symtabs.emplace_back (new gdb_symtab (file_name)); + return object->symtabs.back ().get (); } /* Called by readers to open a new gdb_block. This function also @@ -722,8 +721,6 @@ finalize_symtab (struct gdb_symtab *stab, struct objfile *objfile) BLOCKVECTOR_BLOCK (bv, STATIC_BLOCK); } } - - delete stab; } /* Called when closing a gdb_objfile. Converts OBJ to a proper @@ -742,8 +739,8 @@ jit_object_close_impl (struct gdb_symbol_callbacks *cb, OBJF_NOT_FILENAME); objfile->per_bfd->gdbarch = target_gdbarch (); - for (gdb_symtab *symtab : obj->symtabs) - finalize_symtab (symtab, objfile); + for (const std::unique_ptr &symtab : obj->symtabs) + finalize_symtab (symtab.get (), objfile); add_objfile_entry (objfile, *priv_data);