From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from omta036.useast.a.cloudfilter.net (omta036.useast.a.cloudfilter.net [44.202.169.35]) by sourceware.org (Postfix) with ESMTPS id 54F0A3858002 for ; Sun, 10 Dec 2023 21:41:23 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 54F0A3858002 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=tromey.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=tromey.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 54F0A3858002 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=44.202.169.35 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1702244487; cv=none; b=g0ToveWLWuHJ7zFVNwHafFh1NbuPTNSYB+5JGxSpKUFdXDZ8u8Bdq+niO3l5s1FND3Jbk/LiYaGD0NLSy48ckwbIROKMFzTOJR02fRmZzuRZlGqK4QZe7iJUxewsBZAWufILAOeCA/bSgv0Svhf3R3eQL1v5HNfdzcWDaxKNxJY= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1702244487; c=relaxed/simple; bh=/a8pPTe50QrT+JCddhX55AVQSdmci2zD1Ukvkd+rvDk=; h=DKIM-Signature:From:Date:Subject:MIME-Version:Message-Id:To; b=VFGzyVQNZkFD8TYaNm704MErqV3Yu2N7lF9NfMK3/5Nq7Ch5xX9XK2GiJ/Hq9AixnyMzYrv6mpg7NiTba85DRMAkIKOheA4nahPNe3Vfvk3N0EnCATwjeMZTnqikg/PUxQQpnOW05gS1QIiVDk9k1TgDtO93TjibWqk4p7MTjzM= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from eig-obgw-6004a.ext.cloudfilter.net ([10.0.30.197]) by cmsmtp with ESMTPS id CFfQrvKNogpyECRYBr9E0M; Sun, 10 Dec 2023 21:41:23 +0000 Received: from box5379.bluehost.com ([162.241.216.53]) by cmsmtp with ESMTPS id CRYArF3AHRGmSCRYArsCFO; Sun, 10 Dec 2023 21:41:22 +0000 X-Authority-Analysis: v=2.4 cv=efcuwpIH c=1 sm=1 tr=0 ts=65763082 a=ApxJNpeYhEAb1aAlGBBbmA==:117 a=ApxJNpeYhEAb1aAlGBBbmA==:17 a=OWjo9vPv0XrRhIrVQ50Ab3nP57M=:19 a=dLZJa+xiwSxG16/P+YVxDGlgEgI=:19 a=IkcTkHD0fZMA:10 a=e2cXIFwxEfEA:10 a=Qbun_eYptAEA:10 a=vAysrovbOpam9EC3pTgA:9 a=QEXdDO2ut3YA:10 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=tromey.com; s=default; h=To:In-Reply-To:References:Message-Id:Content-Transfer-Encoding: Content-Type:MIME-Version:Subject:Date:From:Sender:Reply-To:Cc: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=iMXgTw3uBHOO79lXyAPDh9zZszpNOJyVM4cglI+8k5E=; b=vIlt796DINAvUpgBsSVHF5ElGp Nu5BdEcoq1fOMCsP0ctHqdkn0pb5fWjL3ByJtevUcCx+Nur1X6SDuuOCeMB0+by7A2BiQAlBNcpVd R5nfhi/jbClM1DcrK5tsy4p7h; Received: from [198.59.47.65] (port=52450 helo=[192.168.131.83]) by box5379.bluehost.com with esmtpsa (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96.2) (envelope-from ) id 1rCRYA-000SHj-0m for gdb-patches@sourceware.org; Sun, 10 Dec 2023 14:41:22 -0700 From: Tom Tromey Date: Sun, 10 Dec 2023 14:41:25 -0700 Subject: [PATCH v4 17/19] Optimize lookup_minimal_symbol_text MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20231210-t-bg-dwarf-reading-v4-17-b978c32fd12f@tromey.com> References: <20231210-t-bg-dwarf-reading-v4-0-b978c32fd12f@tromey.com> In-Reply-To: <20231210-t-bg-dwarf-reading-v4-0-b978c32fd12f@tromey.com> To: gdb-patches@sourceware.org X-Mailer: b4 0.12.4 X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - box5379.bluehost.com X-AntiAbuse: Original Domain - sourceware.org X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - tromey.com X-BWhitelist: no X-Source-IP: 198.59.47.65 X-Source-L: No X-Exim-ID: 1rCRYA-000SHj-0m X-Source: X-Source-Args: X-Source-Dir: X-Source-Sender: ([192.168.131.83]) [198.59.47.65]:52450 X-Source-Auth: tom+tromey.com X-Email-Count: 20 X-Org: HG=bhshared;ORG=bluehost; X-Source-Cap: ZWx5bnJvYmk7ZWx5bnJvYmk7Ym94NTM3OS5ibHVlaG9zdC5jb20= X-Local-Domain: yes X-CMAE-Envelope: MS4xfOImldb3tupmYJLqk51UK2MfNfunSPsEcBHz3eQKlbrCf0TYmVozojEPrXFCYlPRoMGcznJuL4OzeROWYE3skFskTQSUR/kSvXvnCnE3o4SrqyHtLt+u YUL1c2THK+DtPN8OCkfNuepPS2NQ9rsgxvcSS6uK85N31TLqfIXjL9ochQseBI0b0W+bdmdzONZ8vXuQfN1Ex/jtU73eWwsQ3E0= X-Spam-Status: No, score=-3023.4 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,GIT_PATCH_0,JMQ_SPF_NEUTRAL,KAM_STOCKGEN,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_PASS,TXREP,T_FILL_THIS_FORM_SHORT,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: lookup_minimal_symbol_text always loops over all objfiles, even when an objfile is passed in as an argument. This patch changes the function to loop over the minimal number of objfiles in the latter situation. --- gdb/minsyms.c | 69 +++++++++++++++++++++++++++++++++++------------------------ 1 file changed, 41 insertions(+), 28 deletions(-) diff --git a/gdb/minsyms.c b/gdb/minsyms.c index 71e22ce1a90..0e24da918d9 100644 --- a/gdb/minsyms.c +++ b/gdb/minsyms.c @@ -623,38 +623,51 @@ lookup_minimal_symbol_text (const char *name, struct objfile *objf) unsigned int hash = msymbol_hash (name) % MINIMAL_SYMBOL_HASH_SIZE; - for (objfile *objfile : current_program_space->objfiles ()) - { - if (found_symbol.minsym != NULL) - break; + auto search = [&] (struct objfile *objfile) + { + for (msymbol = objfile->per_bfd->msymbol_hash[hash]; + msymbol != NULL && found_symbol.minsym == NULL; + msymbol = msymbol->hash_next) + { + if (strcmp (msymbol->linkage_name (), name) == 0 && + (msymbol->type () == mst_text + || msymbol->type () == mst_text_gnu_ifunc + || msymbol->type () == mst_file_text)) + { + switch (msymbol->type ()) + { + case mst_file_text: + found_file_symbol.minsym = msymbol; + found_file_symbol.objfile = objfile; + break; + default: + found_symbol.minsym = msymbol; + found_symbol.objfile = objfile; + break; + } + } + } + }; - if (objf == NULL || objf == objfile - || objf == objfile->separate_debug_objfile_backlink) + if (objf == nullptr) + { + for (objfile *objfile : current_program_space->objfiles ()) { - for (msymbol = objfile->per_bfd->msymbol_hash[hash]; - msymbol != NULL && found_symbol.minsym == NULL; - msymbol = msymbol->hash_next) - { - if (strcmp (msymbol->linkage_name (), name) == 0 && - (msymbol->type () == mst_text - || msymbol->type () == mst_text_gnu_ifunc - || msymbol->type () == mst_file_text)) - { - switch (msymbol->type ()) - { - case mst_file_text: - found_file_symbol.minsym = msymbol; - found_file_symbol.objfile = objfile; - break; - default: - found_symbol.minsym = msymbol; - found_symbol.objfile = objfile; - break; - } - } - } + if (found_symbol.minsym != NULL) + break; + search (objfile); } } + else + { + for (objfile *objfile : objf->separate_debug_objfiles ()) + { + if (found_symbol.minsym != NULL) + break; + search (objfile); + } + } + /* External symbols are best. */ if (found_symbol.minsym) return found_symbol; -- 2.43.0