From patchwork Fri May 3 23:12:10 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom Tromey X-Patchwork-Id: 32523 Received: (qmail 533 invoked by alias); 3 May 2019 23:12:46 -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 130705 invoked by uid 89); 3 May 2019 23:12:42 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-18.8 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=compunit_symtab, 5867, 738 X-HELO: gateway34.websitewelcome.com Received: from gateway34.websitewelcome.com (HELO gateway34.websitewelcome.com) (192.185.148.214) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Fri, 03 May 2019 23:12:37 +0000 Received: from cm13.websitewelcome.com (cm13.websitewelcome.com [100.42.49.6]) by gateway34.websitewelcome.com (Postfix) with ESMTP id 1BECE31E3903 for ; Fri, 3 May 2019 18:12:36 -0500 (CDT) Received: from box5379.bluehost.com ([162.241.216.53]) by cmsmtp with SMTP id MhM4hZYh4YTGMMhM4hdone; Fri, 03 May 2019 18:12:36 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=tromey.com; s=default; h=References:In-Reply-To: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:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=mCGf5s4k3EQb4TElzlxrB3QWEbnc4pciztBMen+TyOQ=; b=AhdpqztfZgBAH2+5H9MawPIgpx gvmdeFP6RWB8c4eVgh8N3+bbwwavhXCa0WJuZ4bmPJaWqu/c/RRHKb5qvVdmaP1YX9yMkxDbJZmKE Vtf72sV8X0uJh+Bit5r/2OAxk; Received: from 97-122-168-123.hlrn.qwest.net ([97.122.168.123]:37502 helo=bapiya.Home) by box5379.bluehost.com with esmtpsa (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.91) (envelope-from ) id 1hMhM3-003AAO-TF; Fri, 03 May 2019 18:12:36 -0500 From: Tom Tromey To: gdb-patches@sourceware.org Cc: Tom Tromey Subject: [PATCH v2 10/31] Convert symfile-debug.c to type-safe registry API Date: Fri, 3 May 2019 17:12:10 -0600 Message-Id: <20190503231231.8954-11-tom@tromey.com> In-Reply-To: <20190503231231.8954-1-tom@tromey.com> References: <20190503231231.8954-1-tom@tromey.com> This changes symfile-debug.c to use the type-safe registry API. 2019-04-22 Tom Tromey * symfile-debug.c (struct debug_sym_fns_data): Add initializers. (symfile_debug_objfile_data_key): Change type. (symfile_debug_installed, debug_qf_has_symbols) (debug_qf_find_last_source_symtab) (debug_qf_forget_cached_source_info) (debug_qf_map_symtabs_matching_filename, debug_qf_lookup_symbol) (debug_qf_print_stats, debug_qf_dump) (debug_qf_expand_symtabs_for_function) (debug_qf_expand_all_symtabs) (debug_qf_expand_symtabs_with_fullname) (debug_qf_map_matching_symbols) (debug_qf_expand_symtabs_matching) (debug_qf_find_pc_sect_compunit_symtab) (debug_qf_map_symbol_filenames) (debug_qf_find_compunit_symtab_by_address, debug_sym_get_probes) (debug_sym_new_init, debug_sym_init, debug_sym_read) (debug_sym_read_psymbols, debug_sym_finish, debug_sym_offsets) (debug_sym_read_linetable, debug_sym_relocate): Update. (symfile_debug_free_objfile): Remove. (install_symfile_debug_logging, _initialize_symfile_debug): Update. --- gdb/ChangeLog | 24 +++++++++++ gdb/symfile-debug.c | 102 ++++++++++++++------------------------------ 2 files changed, 57 insertions(+), 69 deletions(-) diff --git a/gdb/symfile-debug.c b/gdb/symfile-debug.c index 5b3ae926504..8266ecbabf0 100644 --- a/gdb/symfile-debug.c +++ b/gdb/symfile-debug.c @@ -39,13 +39,14 @@ struct debug_sym_fns_data { - const struct sym_fns *real_sf; - struct sym_fns debug_sf; + const struct sym_fns *real_sf = nullptr; + struct sym_fns debug_sf {}; }; /* We need to record a pointer to the real set of functions for each objfile. */ -static const struct objfile_data *symfile_debug_objfile_data_key; +static const struct objfile_key + symfile_debug_objfile_data_key; /* If non-zero all calls to the symfile functions are logged. */ static int debug_symfile = 0; @@ -56,7 +57,7 @@ static int symfile_debug_installed (struct objfile *objfile) { return (objfile->sf != NULL - && objfile_data (objfile, symfile_debug_objfile_data_key) != NULL); + && symfile_debug_objfile_data_key.get (objfile) != NULL); } /* Utility return the name to print for SYMTAB. */ @@ -73,8 +74,7 @@ static int debug_qf_has_symbols (struct objfile *objfile) { const struct debug_sym_fns_data *debug_data - = ((const struct debug_sym_fns_data *) - objfile_data (objfile, symfile_debug_objfile_data_key)); + = symfile_debug_objfile_data_key.get (objfile); int retval; retval = debug_data->real_sf->qf->has_symbols (objfile); @@ -89,8 +89,7 @@ static struct symtab * debug_qf_find_last_source_symtab (struct objfile *objfile) { const struct debug_sym_fns_data *debug_data - = ((const struct debug_sym_fns_data *) - objfile_data (objfile, symfile_debug_objfile_data_key)); + = symfile_debug_objfile_data_key.get (objfile); struct symtab *retval; fprintf_filtered (gdb_stdlog, "qf->find_last_source_symtab (%s)\n", @@ -108,8 +107,7 @@ static void debug_qf_forget_cached_source_info (struct objfile *objfile) { const struct debug_sym_fns_data *debug_data - = ((const struct debug_sym_fns_data *) - objfile_data (objfile, symfile_debug_objfile_data_key)); + = symfile_debug_objfile_data_key.get (objfile); fprintf_filtered (gdb_stdlog, "qf->forget_cached_source_info (%s)\n", objfile_debug_name (objfile)); @@ -123,8 +121,7 @@ debug_qf_map_symtabs_matching_filename gdb::function_view callback) { const struct debug_sym_fns_data *debug_data - = ((const struct debug_sym_fns_data *) - objfile_data (objfile, symfile_debug_objfile_data_key)); + = symfile_debug_objfile_data_key.get (objfile); fprintf_filtered (gdb_stdlog, "qf->map_symtabs_matching_filename (%s, \"%s\", \"%s\", %s)\n", @@ -147,8 +144,7 @@ debug_qf_lookup_symbol (struct objfile *objfile, int kind, const char *name, domain_enum domain) { const struct debug_sym_fns_data *debug_data - = ((const struct debug_sym_fns_data *) - objfile_data (objfile, symfile_debug_objfile_data_key)); + = symfile_debug_objfile_data_key.get (objfile); struct compunit_symtab *retval; fprintf_filtered (gdb_stdlog, @@ -171,8 +167,7 @@ static void debug_qf_print_stats (struct objfile *objfile) { const struct debug_sym_fns_data *debug_data - = ((const struct debug_sym_fns_data *) - objfile_data (objfile, symfile_debug_objfile_data_key)); + = symfile_debug_objfile_data_key.get (objfile); fprintf_filtered (gdb_stdlog, "qf->print_stats (%s)\n", objfile_debug_name (objfile)); @@ -184,8 +179,7 @@ static void debug_qf_dump (struct objfile *objfile) { const struct debug_sym_fns_data *debug_data - = ((const struct debug_sym_fns_data *) - objfile_data (objfile, symfile_debug_objfile_data_key)); + = symfile_debug_objfile_data_key.get (objfile); fprintf_filtered (gdb_stdlog, "qf->dump (%s)\n", objfile_debug_name (objfile)); @@ -198,8 +192,7 @@ debug_qf_expand_symtabs_for_function (struct objfile *objfile, const char *func_name) { const struct debug_sym_fns_data *debug_data - = ((const struct debug_sym_fns_data *) - objfile_data (objfile, symfile_debug_objfile_data_key)); + = symfile_debug_objfile_data_key.get (objfile); fprintf_filtered (gdb_stdlog, "qf->expand_symtabs_for_function (%s, \"%s\")\n", @@ -212,8 +205,7 @@ static void debug_qf_expand_all_symtabs (struct objfile *objfile) { const struct debug_sym_fns_data *debug_data - = ((const struct debug_sym_fns_data *) - objfile_data (objfile, symfile_debug_objfile_data_key)); + = symfile_debug_objfile_data_key.get (objfile); fprintf_filtered (gdb_stdlog, "qf->expand_all_symtabs (%s)\n", objfile_debug_name (objfile)); @@ -226,8 +218,7 @@ debug_qf_expand_symtabs_with_fullname (struct objfile *objfile, const char *fullname) { const struct debug_sym_fns_data *debug_data - = ((const struct debug_sym_fns_data *) - objfile_data (objfile, symfile_debug_objfile_data_key)); + = symfile_debug_objfile_data_key.get (objfile); fprintf_filtered (gdb_stdlog, "qf->expand_symtabs_with_fullname (%s, \"%s\")\n", @@ -247,8 +238,7 @@ debug_qf_map_matching_symbols (struct objfile *objfile, symbol_compare_ftype *ordered_compare) { const struct debug_sym_fns_data *debug_data - = ((const struct debug_sym_fns_data *) - objfile_data (objfile, symfile_debug_objfile_data_key)); + = symfile_debug_objfile_data_key.get (objfile); fprintf_filtered (gdb_stdlog, "qf->map_matching_symbols (%s, \"%s\", %s, %d, %s, %s, %s, %s)\n", @@ -276,8 +266,7 @@ debug_qf_expand_symtabs_matching enum search_domain kind) { const struct debug_sym_fns_data *debug_data - = ((const struct debug_sym_fns_data *) - objfile_data (objfile, symfile_debug_objfile_data_key)); + = symfile_debug_objfile_data_key.get (objfile); fprintf_filtered (gdb_stdlog, "qf->expand_symtabs_matching (%s, %s, %s, %s, %s)\n", @@ -303,8 +292,7 @@ debug_qf_find_pc_sect_compunit_symtab (struct objfile *objfile, int warn_if_readin) { const struct debug_sym_fns_data *debug_data - = ((const struct debug_sym_fns_data *) - objfile_data (objfile, symfile_debug_objfile_data_key)); + = symfile_debug_objfile_data_key.get (objfile); struct compunit_symtab *retval; fprintf_filtered (gdb_stdlog, @@ -335,8 +323,7 @@ debug_qf_map_symbol_filenames (struct objfile *objfile, int need_fullname) { const struct debug_sym_fns_data *debug_data - = ((const struct debug_sym_fns_data *) - objfile_data (objfile, symfile_debug_objfile_data_key)); + = symfile_debug_objfile_data_key.get (objfile); fprintf_filtered (gdb_stdlog, "qf->map_symbol_filenames (%s, %s, %s, %d)\n", objfile_debug_name (objfile), @@ -353,8 +340,7 @@ debug_qf_find_compunit_symtab_by_address (struct objfile *objfile, CORE_ADDR address) { const struct debug_sym_fns_data *debug_data - = ((const struct debug_sym_fns_data *) - objfile_data (objfile, symfile_debug_objfile_data_key)); + = symfile_debug_objfile_data_key.get (objfile); fprintf_filtered (gdb_stdlog, "qf->find_compunit_symtab_by_address (%s, %s)\n", objfile_debug_name (objfile), @@ -400,8 +386,7 @@ static const std::vector & debug_sym_get_probes (struct objfile *objfile) { const struct debug_sym_fns_data *debug_data - = ((const struct debug_sym_fns_data *) - objfile_data (objfile, symfile_debug_objfile_data_key)); + = symfile_debug_objfile_data_key.get (objfile); const std::vector &retval = debug_data->real_sf->sym_probe_fns->sym_get_probes (objfile); @@ -425,8 +410,7 @@ static void debug_sym_new_init (struct objfile *objfile) { const struct debug_sym_fns_data *debug_data - = ((const struct debug_sym_fns_data *) - objfile_data (objfile, symfile_debug_objfile_data_key)); + = symfile_debug_objfile_data_key.get (objfile); fprintf_filtered (gdb_stdlog, "sf->sym_new_init (%s)\n", objfile_debug_name (objfile)); @@ -438,8 +422,7 @@ static void debug_sym_init (struct objfile *objfile) { const struct debug_sym_fns_data *debug_data - = ((const struct debug_sym_fns_data *) - objfile_data (objfile, symfile_debug_objfile_data_key)); + = symfile_debug_objfile_data_key.get (objfile); fprintf_filtered (gdb_stdlog, "sf->sym_init (%s)\n", objfile_debug_name (objfile)); @@ -451,8 +434,7 @@ static void debug_sym_read (struct objfile *objfile, symfile_add_flags symfile_flags) { const struct debug_sym_fns_data *debug_data - = ((const struct debug_sym_fns_data *) - objfile_data (objfile, symfile_debug_objfile_data_key)); + = symfile_debug_objfile_data_key.get (objfile); fprintf_filtered (gdb_stdlog, "sf->sym_read (%s, 0x%x)\n", objfile_debug_name (objfile), (unsigned) symfile_flags); @@ -464,8 +446,7 @@ static void debug_sym_read_psymbols (struct objfile *objfile) { const struct debug_sym_fns_data *debug_data - = ((const struct debug_sym_fns_data *) - objfile_data (objfile, symfile_debug_objfile_data_key)); + = symfile_debug_objfile_data_key.get (objfile); fprintf_filtered (gdb_stdlog, "sf->sym_read_psymbols (%s)\n", objfile_debug_name (objfile)); @@ -477,8 +458,7 @@ static void debug_sym_finish (struct objfile *objfile) { const struct debug_sym_fns_data *debug_data - = ((const struct debug_sym_fns_data *) - objfile_data (objfile, symfile_debug_objfile_data_key)); + = symfile_debug_objfile_data_key.get (objfile); fprintf_filtered (gdb_stdlog, "sf->sym_finish (%s)\n", objfile_debug_name (objfile)); @@ -491,8 +471,7 @@ debug_sym_offsets (struct objfile *objfile, const section_addr_info &info) { const struct debug_sym_fns_data *debug_data - = ((const struct debug_sym_fns_data *) - objfile_data (objfile, symfile_debug_objfile_data_key)); + = symfile_debug_objfile_data_key.get (objfile); fprintf_filtered (gdb_stdlog, "sf->sym_offsets (%s, %s)\n", objfile_debug_name (objfile), @@ -514,8 +493,7 @@ static void debug_sym_read_linetable (struct objfile *objfile) { const struct debug_sym_fns_data *debug_data - = ((const struct debug_sym_fns_data *) - objfile_data (objfile, symfile_debug_objfile_data_key)); + = symfile_debug_objfile_data_key.get (objfile); fprintf_filtered (gdb_stdlog, "sf->sym_read_linetable (%s)\n", objfile_debug_name (objfile)); @@ -527,8 +505,7 @@ static bfd_byte * debug_sym_relocate (struct objfile *objfile, asection *sectp, bfd_byte *buf) { const struct debug_sym_fns_data *debug_data - = ((const struct debug_sym_fns_data *) - objfile_data (objfile, symfile_debug_objfile_data_key)); + = symfile_debug_objfile_data_key.get (objfile); bfd_byte *retval; retval = debug_data->real_sf->sym_relocate (objfile, sectp, buf); @@ -563,14 +540,6 @@ static const struct sym_fns debug_sym_fns = &debug_sym_quick_functions }; -/* Free the copy of sym_fns recorded in the registry. */ - -static void -symfile_debug_free_objfile (struct objfile *objfile, void *datum) -{ - xfree (datum); -} - /* Install the debugging versions of the symfile functions for OBJFILE. Do not call this if the debug versions are already installed. */ @@ -586,7 +555,7 @@ install_symfile_debug_logging (struct objfile *objfile) real_sf = objfile->sf; /* Alas we have to preserve NULL entries in REAL_SF. */ - debug_data = XCNEW (struct debug_sym_fns_data); + debug_data = new struct debug_sym_fns_data; #define COPY_SF_PTR(from, to, name, func) \ do { \ @@ -612,7 +581,7 @@ install_symfile_debug_logging (struct objfile *objfile) #undef COPY_SF_PTR debug_data->real_sf = real_sf; - set_objfile_data (objfile, symfile_debug_objfile_data_key, debug_data); + symfile_debug_objfile_data_key.set (objfile, debug_data); objfile->sf = &debug_data->debug_sf; } @@ -627,12 +596,10 @@ uninstall_symfile_debug_logging (struct objfile *objfile) /* The debug versions should be currently installed. */ gdb_assert (symfile_debug_installed (objfile)); - debug_data = ((struct debug_sym_fns_data *) - objfile_data (objfile, symfile_debug_objfile_data_key)); + debug_data = symfile_debug_objfile_data_key.get (objfile); objfile->sf = debug_data->real_sf; - xfree (debug_data); - set_objfile_data (objfile, symfile_debug_objfile_data_key, NULL); + symfile_debug_objfile_data_key.clear (objfile); } /* Call this function to set OBJFILE->SF. @@ -687,9 +654,6 @@ show_debug_symfile (struct ui_file *file, int from_tty, void _initialize_symfile_debug (void) { - symfile_debug_objfile_data_key - = register_objfile_data_with_cleanup (NULL, symfile_debug_free_objfile); - add_setshow_boolean_cmd ("symfile", no_class, &debug_symfile, _("\ Set debugging of the symfile functions."), _("\ Show debugging of the symfile functions."), _("\