From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id lU7XLZDxr2VBdAUAWB0awg (envelope-from ) for ; Tue, 23 Jan 2024 12:04:16 -0500 Authentication-Results: simark.ca; dkim=pass (1024-bit key; unprotected) header.d=jetbrains.com header.i=@jetbrains.com header.a=rsa-sha256 header.s=googleapps header.b=KziFF/l4; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id A84F41E0C3; Tue, 23 Jan 2024 12:04:16 -0500 (EST) Received: from server2.sourceware.org (server2.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id 916DF1E0C2 for ; Tue, 23 Jan 2024 12:04:14 -0500 (EST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id C822138582BB for ; Tue, 23 Jan 2024 17:04:13 +0000 (GMT) Received: from mail-ej1-x62e.google.com (mail-ej1-x62e.google.com [IPv6:2a00:1450:4864:20::62e]) by sourceware.org (Postfix) with ESMTPS id 16C473858C50 for ; Tue, 23 Jan 2024 17:03:34 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 16C473858C50 Authentication-Results: sourceware.org; dmarc=pass (p=reject dis=none) header.from=jetbrains.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=jetbrains.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 16C473858C50 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::62e ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1706029424; cv=none; b=CiHEo4P9J+DyYnlFDNVUva37QxEhyph2qY4+QtLYHr1Kri3VjJhGIZSc8pnAOvaB/Q3Q/7hRqLEPSHW6kYe+zKrSOWuql1fR/86sP4WeZ8FMBerieliQA7coGh1iDtOmvc5C3eiVahSitXQAR0iHnNAReyPNucd0S9IttMkkONs= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1706029424; c=relaxed/simple; bh=JiLWnQQA+RZY/SbQd439R+TPeW/+AGIe4RGug2LwCOk=; h=DKIM-Signature:From:To:Subject:Date:Message-Id:MIME-Version; b=rgxeuFWDoZa/WUwBNP3tFyXUP6SicTMbuFdc8aD+ASxugao10ZLTRYf4wT7+mQq7fAcf6xU773HdILW/uzaJB5wS7MZarjdvnYY9/qILQcHvJazjHAtn7UlI180oXYI2/7tywdgrrvRj82IlRva2NSgVHqJqAD4ApmF+S7igsIA= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-ej1-x62e.google.com with SMTP id a640c23a62f3a-a2dc7827a97so501446566b.2 for ; Tue, 23 Jan 2024 09:03:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jetbrains.com; s=googleapps; t=1706029412; x=1706634212; darn=sourceware.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=aY4FXP5soT0e3vsqQ+rNcSc5IHiUeOhV42uTc47+q2g=; b=KziFF/l4VfZysgMi69ni674mP7C1UiY8WLhdHKrpJnyDHP76Mc1/EAd0nqnLGyjDe2 Ue9b6Tw+Xq9SYIR3mDwRct73E15GtefeiKpvyYIOu412hwMvwGx8j1mijQN+fXa0bk5o hrEMQogB31ZgAPsjzlJe9WIs2D0RTAsTS/68M= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1706029412; x=1706634212; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=aY4FXP5soT0e3vsqQ+rNcSc5IHiUeOhV42uTc47+q2g=; b=L6GMoAfuR2IXekPAphUyOd72sF27W7MYW5dWYljjRkzqGEQhUaAl+Iwsp2b8HfdaJq R0bK+tYJpJUzIBcvknKYBFQZyYFAJuUZnST6SMO3Ckoq9E4E4tAeYJKcVllQbng49kUj WOJBmGQSBeGLC1ghJ1ZAagYI6v+MdKV2+qYHsSIRsR1Mset7TDXAjWhCxoCN43CRKvm/ hAPRHM44ty9pHzeAUQcArxxzg9eFO48uwuCravad1sRy1F80PsxJVgprQDDsDKUePrnF PQT96r1h3VuD2ZFMxwHaoK8fjE25M4zlN7FnMkdcaG4nEVPoVNvtOSd2Sf5rtC8Fmft+ jfIQ== X-Gm-Message-State: AOJu0YxACDqo4BaL6guj7ARK3ktoK8QGuB+ik2Yy5BiwV9q1JQzG5RrJ /eOEPQUa4y1erL+4lHTlqyG5f25UkcSi9uJUP/TvQc/Tcy2talTTHrXdD2rvwrH+RkUSm2cphsL a6Q== X-Google-Smtp-Source: AGHT+IGXtiTaLMkjjeV1I0S6Q7Oj2SdVSQNNfmd2QbBhRZPXz4oLim9BBB3zd7f0+UtNL2LR1dIKaw== X-Received: by 2002:a17:906:4114:b0:a2e:d378:a914 with SMTP id j20-20020a170906411400b00a2ed378a914mr86015ejk.143.1706029412587; Tue, 23 Jan 2024 09:03:32 -0800 (PST) Received: from nd-lubuntu.labs.intellij.net (ad96e1c12.dsl.de.colt.net. [217.110.28.18]) by smtp.gmail.com with ESMTPSA id p26-20020a1709061b5a00b00a298ade2e72sm14569741ejg.195.2024.01.23.09.03.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 23 Jan 2024 09:03:32 -0800 (PST) From: Dmitry Neverov To: gdb-patches@sourceware.org Cc: dmitry.neverov@jetbrains.com Subject: [RFC v2][PR symtab/30520 1/4] gdb/symtab: check name matches before expanding a CU Date: Tue, 23 Jan 2024 18:03:22 +0100 Message-Id: <20240123170325.752251-1-dmitry.neverov@jetbrains.com> X-Mailer: git-send-email 2.39.2 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-11.1 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, 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 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+public-inbox=simark.ca@sourceware.org From: "Dmitry.Neverov" The added check fixes the case when an unqualified lookup name without template arguments causes expansion of many CUs which contain the name with template arguments. This is similar to what dw2_expand_symtabs_matching_symbol does before expanding the CU. In the referenced issue the lookup name was wxObjectDataPtr and many CUs had names like wxObjectDataPtr. This caused their expansion and the lookup took around a minute. The added check helps to avoid the expansion and makes the symbol lookup to return in a second or so. Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=30520 --- gdb/dwarf2/read.c | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/gdb/dwarf2/read.c b/gdb/dwarf2/read.c index bdfda31dc16..b125b2e69f0 100644 --- a/gdb/dwarf2/read.c +++ b/gdb/dwarf2/read.c @@ -16690,9 +16690,25 @@ cooked_index_functions::expand_symtabs_matching = lookup_name_without_params.match_type (); if ((match_type == symbol_name_match_type::FULL || (lang != language_ada - && match_type == symbol_name_match_type::EXPRESSION)) - && parent != nullptr) - continue; + && match_type == symbol_name_match_type::EXPRESSION))) + { + if (parent != nullptr) + continue; + + if (entry->lang != language_unknown) + { + const language_defn *lang_def = language_def (entry->lang); + lookup_name_info last_segment_lookup_name ( + last_name.data (), symbol_name_match_type::FULL, + false, true); + symbol_name_matcher_ftype *name_matcher + = lang_def->get_symbol_name_matcher + (last_segment_lookup_name); + if (!name_matcher (entry->canonical, + last_segment_lookup_name, nullptr)) + continue; + } + } } else { -- 2.39.2