From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 51566 invoked by alias); 22 Nov 2019 16:15:42 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 51421 invoked by uid 89); 22 Nov 2019 16:15:27 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-14.0 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_2,GIT_PATCH_3 autolearn=ham version=3.3.1 spammy=minsyms X-HELO: mx1.osci.io Received: from polly.osci.io (HELO mx1.osci.io) (8.43.85.229) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Fri, 22 Nov 2019 16:15:26 +0000 Received: by mx1.osci.io (Postfix, from userid 994) id 2BAF520393; Fri, 22 Nov 2019 11:15:24 -0500 (EST) Received: from gnutoolchain-gerrit.osci.io (gnutoolchain-gerrit.osci.io [8.43.85.239]) by mx1.osci.io (Postfix) with ESMTP id BA7EC202D0; Fri, 22 Nov 2019 11:15:21 -0500 (EST) Received: from localhost (localhost [127.0.0.1]) by gnutoolchain-gerrit.osci.io (Postfix) with ESMTP id 8EC8E2816F; Fri, 22 Nov 2019 11:15:21 -0500 (EST) X-Gerrit-PatchSet: 3 Date: Fri, 22 Nov 2019 16:15:00 -0000 From: "Pedro Alves (Code Review)" To: Tom Tromey , gdb-patches@sourceware.org Cc: Simon Marchi Auto-Submitted: auto-generated X-Gerrit-MessageType: comment Subject: [review v3] Defer minimal symbol name-setting X-Gerrit-Change-Id: I4fe3993b99fb3a43968067806e294d48e377fd76 X-Gerrit-Change-Number: 166 X-Gerrit-ChangeURL: X-Gerrit-Commit: 93cf697d370bd0f0c9bed0f56b231c467168fa13 In-Reply-To: References: X-Gerrit-Comment-Date: Fri, 22 Nov 2019 11:15:21 -0500 Reply-To: gnutoolchain-gerrit@osci.io MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Disposition: inline User-Agent: Gerrit/3.0.3-79-g83ff7f88f1 Content-Type: text/plain; charset=UTF-8 Message-Id: <20191122161521.8EC8E2816F@gnutoolchain-gerrit.osci.io> X-SW-Source: 2019-11/txt/msg00709.txt.bz2 Pedro Alves has posted comments on this change. Change URL: https://gnutoolchain-gerrit.osci.io/r/c/binutils-gdb/+/166 ...................................................................... Patch Set 3: Code-Review+2 (2 comments) | --- gdb/minsyms.c | +++ gdb/minsyms.c | @@ -1348,17 +1353,28 @@ minimal_symbol_reader::install () | The strings themselves are also located in the storage_obstack | of this objfile. */ | | if (m_objfile->per_bfd->minimal_symbol_count != 0) | clear_minimal_symbol_hash_tables (m_objfile); | | m_objfile->per_bfd->minimal_symbol_count = mcount; | m_objfile->per_bfd->msymbols = std::move (msym_holder); | | + msymbols = m_objfile->per_bfd->msymbols.get (); | + for (int i = 0; i < mcount; ++i) | + { | + if (!msymbols[i].name_set) | + { | + symbol_set_names (&msymbols[i], msymbols[i].name, | + false, m_objfile->per_bfd); | + msymbols[i].name_set = 1; | + } | + } PS3, Line 1371: I was wondering whether we could do without the name_set field by doing this symbol_set_names loop only over the new minsyms, before appending them to the objfile's preexisting minsyms list, but I guess the need for deduplication shows that we'd be demangling more than necessary. | + | build_minimal_symbol_hash_tables (m_objfile); | } | } | | /* Check if PC is in a shared library trampoline code stub. | Return minimal symbol for the trampoline entry or NULL if PC is not | in a trampoline code stub. */ | | --- gdb/symtab.h | +++ gdb/symtab.h | @@ -683,19 +683,23 @@ struct minimal_symbol : public general_symbol_info | the object file format may not carry that piece of information. */ | unsigned int has_size : 1; | | /* For data symbols only, if this is set, then the symbol might be | subject to copy relocation. In this case, a minimal symbol | matching the symbol's linkage name is first looked for in the | main objfile. If found, then that address is used; otherwise the | address in this symbol is used. */ | | unsigned maybe_copied : 1; | | + /* Non-zero if this symbol ever had its demangled name set (even if | + it was set to NULL). */ | + unsigned int name_set : 1; PS3, Line 696: Don't change it, since the other fields are the same, but, I'm wondering whether nowadays with C++ we shouldn't be writing bool name_set : 1; and then use true/false instead of 0/1. I assume that it compiles down to the same. | + | /* Minimal symbols with the same hash key are kept on a linked | list. This is the link. */ | | struct minimal_symbol *hash_next; | | /* Minimal symbols are stored in two different hash tables. This is | the `next' pointer for the demangled hash table. */ | -- Gerrit-Project: binutils-gdb Gerrit-Branch: master Gerrit-Change-Id: I4fe3993b99fb3a43968067806e294d48e377fd76 Gerrit-Change-Number: 166 Gerrit-PatchSet: 3 Gerrit-Owner: Tom Tromey Gerrit-Reviewer: Pedro Alves Gerrit-Reviewer: Tom Tromey Gerrit-CC: Simon Marchi Gerrit-Comment-Date: Fri, 22 Nov 2019 16:15:21 +0000 Gerrit-HasComments: Yes Gerrit-Has-Labels: Yes Gerrit-MessageType: comment