From patchwork Thu May 10 22:23:47 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom Tromey X-Patchwork-Id: 27224 Received: (qmail 70032 invoked by alias); 10 May 2018 22:25:20 -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 42140 invoked by uid 89); 10 May 2018 22:24:25 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-24.5 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_HELO_PASS autolearn=ham version=3.3.2 spammy=Unconditionally X-HELO: gateway20.websitewelcome.com Received: from gateway20.websitewelcome.com (HELO gateway20.websitewelcome.com) (192.185.49.40) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Thu, 10 May 2018 22:24:08 +0000 Received: from cm10.websitewelcome.com (cm10.websitewelcome.com [100.42.49.4]) by gateway20.websitewelcome.com (Postfix) with ESMTP id 65458400CCC80 for ; Thu, 10 May 2018 17:24:06 -0500 (CDT) Received: from box5379.bluehost.com ([162.241.216.53]) by cmsmtp with SMTP id Gtyofw90QBcCXGtyoftsGi; Thu, 10 May 2018 17:24:06 -0500 X-Authority-Reason: nr=8 Received: from 97-122-176-117.hlrn.qwest.net ([97.122.176.117]:54520 helo=bapiya.Home) by box5379.bluehost.com with esmtpsa (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.89_1) (envelope-from ) id 1fGtyo-001ijL-60; Thu, 10 May 2018 17:24:06 -0500 From: Tom Tromey To: gdb-patches@sourceware.org Cc: Tom Tromey Subject: [RFA 05/15] Simplify calls to init_psymbol_list Date: Thu, 10 May 2018 16:23:47 -0600 Message-Id: <20180510222357.27332-6-tom@tromey.com> In-Reply-To: <20180510222357.27332-1-tom@tromey.com> References: <20180510222357.27332-1-tom@tromey.com> X-BWhitelist: no X-Source-L: No X-Exim-ID: 1fGtyo-001ijL-60 X-Source-Sender: 97-122-176-117.hlrn.qwest.net (bapiya.Home) [97.122.176.117]:54520 X-Source-Auth: tom+tromey.com X-Email-Count: 6 X-Source-Cap: ZWx5bnJvYmk7ZWx5bnJvYmk7Ym94NTM3OS5ibHVlaG9zdC5jb20= X-Local-Domain: yes Existing callers to init_psymbol_list were checking to see if psymbols had already been initialized. It seemed better to me to do this check directly in init_psymbol_list, simplifying the callers. 2018-05-09 Tom Tromey * xcoffread.c (xcoff_initial_scan): Unconditionally call init_psymbol_list. * psymtab.c (init_psymbol_list): Do nothing if already called. * psympriv.h (init_psymbol_list): Add comment. * dwarf2read.c (dwarf2_build_psymtabs): Unconditionally call init_psymbol_list. * dbxread.c (dbx_symfile_read): Unconditionally call init_psymbol_list. --- gdb/ChangeLog | 11 +++++++++++ gdb/dbxread.c | 4 +--- gdb/dwarf2read.c | 4 +--- gdb/psympriv.h | 6 +++++- gdb/psymtab.c | 8 ++++---- gdb/xcoffread.c | 13 +++++-------- 6 files changed, 27 insertions(+), 19 deletions(-) diff --git a/gdb/dbxread.c b/gdb/dbxread.c index be0483a38b..17d53331a4 100644 --- a/gdb/dbxread.c +++ b/gdb/dbxread.c @@ -529,9 +529,7 @@ dbx_symfile_read (struct objfile *objfile, symfile_add_flags symfile_flags) perror_with_name (objfile_name (objfile)); /* Size the symbol table. */ - if (objfile->global_psymbols.capacity () == 0 - && objfile->static_psymbols.capacity () == 0) - init_psymbol_list (objfile, DBX_SYMCOUNT (objfile)); + init_psymbol_list (objfile, DBX_SYMCOUNT (objfile)); symbol_size = DBX_SYMBOL_SIZE (objfile); symbol_table_offset = DBX_SYMTAB_OFFSET (objfile); diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c index 823f6bfd2a..9e846e75bb 100644 --- a/gdb/dwarf2read.c +++ b/gdb/dwarf2read.c @@ -6226,9 +6226,7 @@ dwarf2_build_psymtabs (struct objfile *objfile) struct dwarf2_per_objfile *dwarf2_per_objfile = get_dwarf2_per_objfile (objfile); - if (objfile->global_psymbols.capacity () == 0 - && objfile->static_psymbols.capacity () == 0) - init_psymbol_list (objfile, 1024); + init_psymbol_list (objfile, 1024); TRY { diff --git a/gdb/psympriv.h b/gdb/psympriv.h index 8dcd82212b..32c9ee1199 100644 --- a/gdb/psympriv.h +++ b/gdb/psympriv.h @@ -295,7 +295,11 @@ extern void add_psymbol_to_list (const char *, int, CORE_ADDR, enum language, struct objfile *); -extern void init_psymbol_list (struct objfile *, int); +/* Initialize storage for partial symbols. If partial symbol storage + has already been initialized, this does nothing. TOTAL_SYMBOLS is + an estimate of how many symbols there will be. */ + +extern void init_psymbol_list (struct objfile *objfile, int total_symbols); extern struct partial_symtab *start_psymtab_common (struct objfile *, const char *, CORE_ADDR); diff --git a/gdb/psymtab.c b/gdb/psymtab.c index 4fd47bf92b..c1c8cba800 100644 --- a/gdb/psymtab.c +++ b/gdb/psymtab.c @@ -1725,14 +1725,14 @@ add_psymbol_to_list (const char *name, int namelength, int copy_name, append_psymbol_to_list (list, psym, objfile); } -/* Initialize storage for partial symbols. */ +/* See psympriv.h. */ void init_psymbol_list (struct objfile *objfile, int total_symbols) { - /* Free any previously allocated psymbol lists. */ - objfile->global_psymbols.clear (); - objfile->static_psymbols.clear (); + if (objfile->global_psymbols.capacity () == 0 + && objfile->static_psymbols.capacity () == 0) + return; /* Current best guess is that approximately a twentieth of the total symbols (in a debugging file) are global or static diff --git a/gdb/xcoffread.c b/gdb/xcoffread.c index 3cb1944554..7ec367a7ac 100644 --- a/gdb/xcoffread.c +++ b/gdb/xcoffread.c @@ -3000,14 +3000,11 @@ xcoff_initial_scan (struct objfile *objfile, symfile_add_flags symfile_flags) if (val != size) perror_with_name (_("reading symbol table")); - /* If we are reinitializing, or if we have never loaded syms yet, init. */ - if (objfile->global_psymbols.capacity () == 0 - && objfile->static_psymbols.capacity () == 0) - /* I'm not sure how how good num_symbols is; the rule of thumb in - init_psymbol_list was developed for a.out. On the one hand, - num_symbols includes auxents. On the other hand, it doesn't - include N_SLINE. */ - init_psymbol_list (objfile, num_symbols); + /* I'm not sure how how good num_symbols is; the rule of thumb in + init_psymbol_list was developed for a.out. On the one hand, + num_symbols includes auxents. On the other hand, it doesn't + include N_SLINE. */ + init_psymbol_list (objfile, num_symbols); free_pending_blocks ();