From patchwork Tue Jun 5 19:22:27 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom Tromey X-Patchwork-Id: 27639 Received: (qmail 58014 invoked by alias); 5 Jun 2018 19:22:37 -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 57957 invoked by uid 89); 5 Jun 2018 19:22:36 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-26.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.2 spammy=datum, UD:elfread.c, sk:elf_sym, elfreadc X-HELO: gateway21.websitewelcome.com Received: from gateway21.websitewelcome.com (HELO gateway21.websitewelcome.com) (192.185.45.155) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 05 Jun 2018 19:22:34 +0000 Received: from cm13.websitewelcome.com (cm13.websitewelcome.com [100.42.49.6]) by gateway21.websitewelcome.com (Postfix) with ESMTP id 00842400DF8EA for ; Tue, 5 Jun 2018 14:22:33 -0500 (CDT) Received: from box5379.bluehost.com ([162.241.216.53]) by cmsmtp with SMTP id QHXMfETaI79N3QHXMfihxv; Tue, 05 Jun 2018 14:22:32 -0500 X-Authority-Reason: nr=8 Received: from 75-166-37-59.hlrn.qwest.net ([75.166.37.59]:38510 helo=bapiya.Home) by box5379.bluehost.com with esmtpsa (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.91) (envelope-from ) id 1fQHXM-0003GM-D4; Tue, 05 Jun 2018 14:22:32 -0500 From: Tom Tromey To: gdb-patches@sourceware.org Cc: Tom Tromey Subject: [RFA] Make dwarf2_free_objfile static Date: Tue, 5 Jun 2018 13:22:27 -0600 Message-Id: <20180605192227.5343-1-tom@tromey.com> X-BWhitelist: no X-Source-L: No X-Exim-ID: 1fQHXM-0003GM-D4 X-Source-Sender: 75-166-37-59.hlrn.qwest.net (bapiya.Home) [75.166.37.59]:38510 X-Source-Auth: tom+tromey.com X-Email-Count: 1 X-Source-Cap: ZWx5bnJvYmk7ZWx5bnJvYmk7Ym94NTM3OS5ibHVlaG9zdC5jb20= X-Local-Domain: yes I noticed that dwarf2_free_objfile can be made static, by changing it to be a registry cleanup function. This simplifies the code, as well, because now symbol readers don't have to explicitly call it. Tested by the buildbot. gdb/ChangeLog 2018-06-05 Tom Tromey * coffread.c (coff_symfile_finish): Update. * xcoffread.c (xcoff_symfile_finish): Update. * elfread.c (elf_symfile_finish): Update. * symfile.h (dwarf2_free_objfile): Don't declare. * dwarf2read.c (_initialize_dwarf2_read): Use register_objfile_data_with_cleanup. (dwarf2_free_objfile): Now static. Change signature. --- gdb/ChangeLog | 10 ++++++++++ gdb/coffread.c | 2 -- gdb/dwarf2read.c | 12 ++++++------ gdb/elfread.c | 1 - gdb/symfile.h | 2 -- gdb/xcoffread.c | 2 -- 6 files changed, 16 insertions(+), 13 deletions(-) diff --git a/gdb/coffread.c b/gdb/coffread.c index bc266fb60e3..30583e1dda4 100644 --- a/gdb/coffread.c +++ b/gdb/coffread.c @@ -766,8 +766,6 @@ coff_symfile_finish (struct objfile *objfile) { /* Let stabs reader clean up. */ stabsread_clear_cache (); - - dwarf2_free_objfile (objfile); } diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c index 1cabfbb0d45..55377dc1004 100644 --- a/gdb/dwarf2read.c +++ b/gdb/dwarf2read.c @@ -25003,13 +25003,13 @@ free_one_cached_comp_unit (struct dwarf2_per_cu_data *target_per_cu) } } -/* Release all extra memory associated with OBJFILE. */ +/* Cleanup function for the dwarf2_per_objfile data. */ -void -dwarf2_free_objfile (struct objfile *objfile) +static void +dwarf2_free_objfile (struct objfile *objfile, void *datum) { struct dwarf2_per_objfile *dwarf2_per_objfile - = get_dwarf2_per_objfile (objfile); + = (struct dwarf2_per_objfile *) datum; delete dwarf2_per_objfile; } @@ -25331,8 +25331,8 @@ show_check_physname (struct ui_file *file, int from_tty, void _initialize_dwarf2_read (void) { - - dwarf2_objfile_data_key = register_objfile_data (); + dwarf2_objfile_data_key + = register_objfile_data_with_cleanup (nullptr, dwarf2_free_objfile); add_prefix_cmd ("dwarf", class_maintenance, set_dwarf_cmd, _("\ Set DWARF specific variables.\n\ diff --git a/gdb/elfread.c b/gdb/elfread.c index 0fe2adbd4d2..358ec77b35b 100644 --- a/gdb/elfread.c +++ b/gdb/elfread.c @@ -1333,7 +1333,6 @@ elf_new_init (struct objfile *ignore) static void elf_symfile_finish (struct objfile *objfile) { - dwarf2_free_objfile (objfile); } /* ELF specific initialization routine for reading symbols. */ diff --git a/gdb/symfile.h b/gdb/symfile.h index d9185092eec..62072b104cc 100644 --- a/gdb/symfile.h +++ b/gdb/symfile.h @@ -614,8 +614,6 @@ extern bool dwarf2_initialize_objfile (struct objfile *objfile, extern void dwarf2_build_psymtabs (struct objfile *); extern void dwarf2_build_frame_info (struct objfile *); -void dwarf2_free_objfile (struct objfile *); - /* From mdebugread.c */ extern void mdebug_build_psymtabs (minimal_symbol_reader &, diff --git a/gdb/xcoffread.c b/gdb/xcoffread.c index 7b9694bcff9..79b1df70fd0 100644 --- a/gdb/xcoffread.c +++ b/gdb/xcoffread.c @@ -1959,8 +1959,6 @@ xcoff_symfile_finish (struct objfile *objfile) inclTable = NULL; } inclIndx = inclLength = inclDepth = 0; - - dwarf2_free_objfile (objfile); }