From patchwork Sat Jan 11 18:44:22 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom Tromey X-Patchwork-Id: 37307 Received: (qmail 98526 invoked by alias); 11 Jan 2020 18:44:28 -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 98453 invoked by uid 89); 11 Jan 2020 18:44:28 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-21.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_HELO_PASS autolearn=ham version=3.3.1 spammy=HX-Languages-Length:1892 X-HELO: gateway21.websitewelcome.com Received: from gateway21.websitewelcome.com (HELO gateway21.websitewelcome.com) (192.185.45.36) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Sat, 11 Jan 2020 18:44:26 +0000 Received: from cm13.websitewelcome.com (cm13.websitewelcome.com [100.42.49.6]) by gateway21.websitewelcome.com (Postfix) with ESMTP id C3CFD400CB749 for ; Sat, 11 Jan 2020 12:44:24 -0600 (CST) Received: from box5379.bluehost.com ([162.241.216.53]) by cmsmtp with SMTP id qLkGigDNxHiO0qLkGieksq; Sat, 11 Jan 2020 12:44:24 -0600 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=tromey.com; s=default; h=Message-Id:Date:Subject:Cc:To:From:Sender:Reply-To:MIME-Version :Content-Type:Content-Transfer-Encoding:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: In-Reply-To:References:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=BMDJie/3pw25xHS2Qp8hK5v0q1pru/OukSQ42NRAe6E=; b=ZKPjiellmQOWiaXGZhFtWHDQO6 V7azy+yJneQ3X+YpuqUXXiTKoyV4yQgFMlJBeyK/eyUugSurmi5hmMGUSm3izO5W4uUAukYWCG5zv E+4VBVystqdR6SDr1Y8PuKTBs; Received: from 75-166-123-50.hlrn.qwest.net ([75.166.123.50]:42482 helo=bapiya.Home) by box5379.bluehost.com with esmtpsa (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.92) (envelope-from ) id 1iqLkG-004NCY-JN; Sat, 11 Jan 2020 11:44:24 -0700 From: Tom Tromey To: gdb-patches@sourceware.org Cc: Tom Tromey Subject: [PATCH] Call disassemble_free_target in gdb Date: Sat, 11 Jan 2020 11:44:22 -0700 Message-Id: <20200111184422.4690-1-tom@tromey.com> Commit 20135676fc4c3912297c313b3e0d3cbd6cc402e3 ("PR24960, Memory leak from disassembler") added "disassemble_free_target" to opcodes. This is used to free target-specific data when finished with a disassembler. This patch changes gdb to call this function where needed. gdb/ChangeLog 2020-01-11 Tom Tromey * disasm.c (~gdb_disassembler): New destructor. (gdb_buffered_insn_length): Call disassemble_free_target. * disasm.h (class gdb_disassembler): Declare destructor. Use DISABLE_COPY_AND_ASSIGN. Change-Id: I245ba5b7dec5e5d9f29cd21832c6e2b4fecef047 --- gdb/ChangeLog | 7 +++++++ gdb/disasm.c | 9 ++++++++- gdb/disasm.h | 4 ++++ 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/gdb/disasm.c b/gdb/disasm.c index 39052f7fd36..d0c287d9f68 100644 --- a/gdb/disasm.c +++ b/gdb/disasm.c @@ -781,6 +781,11 @@ gdb_disassembler::gdb_disassembler (struct gdbarch *gdbarch, disassemble_init_for_target (&m_di); } +gdb_disassembler::~gdb_disassembler () +{ + disassemble_free_target (&m_di); +} + int gdb_disassembler::print_insn (CORE_ADDR memaddr, int *branch_delay_insns) @@ -908,7 +913,9 @@ gdb_buffered_insn_length (struct gdbarch *gdbarch, gdb_buffered_insn_length_init_dis (gdbarch, &di, insn, max_len, addr, &disassembler_options_holder); - return gdbarch_print_insn (gdbarch, addr, &di); + int result = gdbarch_print_insn (gdbarch, addr, &di); + disassemble_free_target (&di); + return result; } char * diff --git a/gdb/disasm.h b/gdb/disasm.h index 0bda4df58ca..b0f535eaa21 100644 --- a/gdb/disasm.h +++ b/gdb/disasm.h @@ -47,6 +47,10 @@ public: : gdb_disassembler (gdbarch, file, dis_asm_read_memory) {} + ~gdb_disassembler (); + + DISABLE_COPY_AND_ASSIGN (gdb_disassembler); + int print_insn (CORE_ADDR memaddr, int *branch_delay_insns = NULL); /* Return the gdbarch of gdb_disassembler. */