From patchwork Sun Oct 29 17:35:32 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom Tromey X-Patchwork-Id: 78685 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 13A62387544C for ; Sun, 29 Oct 2023 17:39:54 +0000 (GMT) X-Original-To: gdb-patches@sourceware.org Delivered-To: gdb-patches@sourceware.org Received: from omta040.useast.a.cloudfilter.net (omta040.useast.a.cloudfilter.net [44.202.169.39]) by sourceware.org (Postfix) with ESMTPS id A72F838618CD for ; Sun, 29 Oct 2023 17:38:28 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org A72F838618CD 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 A72F838618CD Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=44.202.169.39 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1698601114; cv=none; b=Zr6oPFIZNKRHkzY8Rt5WQR7lK43T8s67mY5lsqNajBZZD68G3247sXWf3iQ/0NM9avz6lkMyZsKdC7+egT6omfmjF9Dnw4AjvCBtwx9zFectL23d4xm1Q9UdCx3kKuYZAnNytQZBYLuCeOcD4NKXj5IYvuZX5MQnSl07Nt6ZVQg= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1698601114; c=relaxed/simple; bh=jAYGe0Mo6TpPmGdxtcBbYwE6F7ihfSIOQ8XLkSewTE0=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=N4cXl0MblED/WVYFSQ4Vcr8vH1y1gLXu3X2TUiw/uAc9sZKyFsGbuFdijdafqcID8xqHRu5EE3QyOVFGldi0s7lPqeIRtmExpSDaatICnIFhLEzm3WGa7spiD1Q7UsTiq4ZMM97BTTy03MeSiNRJNttSfoeBIcn8kDFj61CxFEU= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from eig-obgw-6002a.ext.cloudfilter.net ([10.0.30.222]) by cmsmtp with ESMTPS id waUbq6WKV6nOZx9k4qvsU2; Sun, 29 Oct 2023 17:38:28 +0000 Received: from box5379.bluehost.com ([162.241.216.53]) by cmsmtp with ESMTPS id x9k3qskH2GYrgx9k3qcBxq; Sun, 29 Oct 2023 17:38:27 +0000 X-Authority-Analysis: v=2.4 cv=bYd47cDB c=1 sm=1 tr=0 ts=653e9893 a=ApxJNpeYhEAb1aAlGBBbmA==:117 a=ApxJNpeYhEAb1aAlGBBbmA==:17 a=OWjo9vPv0XrRhIrVQ50Ab3nP57M=:19 a=dLZJa+xiwSxG16/P+YVxDGlgEgI=:19 a=bhdUkHdE2iEA:10 a=Qbun_eYptAEA:10 a=vAysrovbOpam9EC3pTgA:9 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=tromey.com; s=default; h=Content-Transfer-Encoding:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:Cc:To:From:Sender:Reply-To:Content-Type: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=+D779HQ2uNGQAvMOCXyaMxzogqvPFKl/KEt8foQeJ4A=; b=fsQVY3HgfqPKFwl8XMYGgTzJQH wncEcuBHLfyCsLh6bqvuJgWy9TjaLQiT2TtMd8BCX3JrP7CrEKoyP8Ac/U6EI2ABk/dVE+QlkD5bX KJ6UgIbQMPRMiN7fxCd5UiwL8; Received: from 97-122-77-73.hlrn.qwest.net ([97.122.77.73]:47472 helo=localhost.localdomain) by box5379.bluehost.com with esmtpsa (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96.2) (envelope-from ) id 1qx9k2-000nop-2d; Sun, 29 Oct 2023 11:38:26 -0600 From: Tom Tromey To: gdb-patches@sourceware.org Cc: Tom Tromey Subject: [PATCH 13/15] Optimize lookup_minimal_symbol_text Date: Sun, 29 Oct 2023 11:35:32 -0600 Message-ID: <20231029173839.471514-14-tom@tromey.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20231029173839.471514-1-tom@tromey.com> References: <20231029173839.471514-1-tom@tromey.com> MIME-Version: 1.0 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: 97.122.77.73 X-Source-L: No X-Exim-ID: 1qx9k2-000nop-2d X-Source: X-Source-Args: X-Source-Dir: X-Source-Sender: 97-122-77-73.hlrn.qwest.net (localhost.localdomain) [97.122.77.73]:47472 X-Source-Auth: tom+tromey.com X-Email-Count: 14 X-Org: HG=bhshared;ORG=bluehost; X-Source-Cap: ZWx5bnJvYmk7ZWx5bnJvYmk7Ym94NTM3OS5ibHVlaG9zdC5jb20= X-Local-Domain: yes X-CMAE-Envelope: MS4xfMrCi8m+RgR8Ol/NChy2MlTvkzOGMPQc2qixjIyaELDVE3kR29KsH7i6tHlsdnIYLqo+zALIUhINRnHH5FFyVL99MbAU4k+4zUJSR3wBF+U7yU5ueLOP fahU0QLSWBfrfHVrDf6RgXLvlga1nxZKShyynbgLhrFErJqotKtLj/0CowVmQIbvELRGFvjzh1oJsaN8OIGKpNH2s1Qt6NE/4C0= X-Spam-Status: No, score=-3023.6 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 autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gdb-patches-bounces+patchwork=sourceware.org@sourceware.org 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 1d778822858..7e0522159b8 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;