From patchwork Tue Jan 23 17:03:22 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Dmitry.Neverov" X-Patchwork-Id: 84623 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 081AD3858D3C for ; Tue, 23 Jan 2024 17:04:17 +0000 (GMT) X-Original-To: gdb-patches@sourceware.org Delivered-To: gdb-patches@sourceware.org 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 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+patchwork=sourceware.org@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 { From patchwork Tue Jan 23 17:03:23 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Dmitry.Neverov" X-Patchwork-Id: 84624 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 4466C3858016 for ; Tue, 23 Jan 2024 17:04:17 +0000 (GMT) X-Original-To: gdb-patches@sourceware.org Delivered-To: gdb-patches@sourceware.org Received: from mail-ej1-x631.google.com (mail-ej1-x631.google.com [IPv6:2a00:1450:4864:20::631]) by sourceware.org (Postfix) with ESMTPS id D63F63858C66 for ; Tue, 23 Jan 2024 17:03:34 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org D63F63858C66 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 D63F63858C66 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::631 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1706029424; cv=none; b=CyC4aWqeKGfgm9Q5BU/9dW5PKA14soQjLxZ4ThYpm2S+C4GOz89HNnD3eesIw7ag0we3WIqBVHK62hGaJ4KvtklBODEihLY8XbdN0xIRyug54VI5b3cIZfPMvniGFap9twtZzLjvSRzyPitkfCeve4Jpyjl5tLkNe4Esx9hCAek= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1706029424; c=relaxed/simple; bh=/woSTAPwRRB+eR5/jRNBZUfAmp9utgtl4inAavfTTu4=; h=DKIM-Signature:From:To:Subject:Date:Message-Id:MIME-Version; b=vas+EWmX6DYjvys/zo2faJlIhWFwxsdJFilkbSVNDHyogsEoTVtirJNOYb2iuu88vSJK2/c5JlpfW7SXtgWfMoWewEvRxJOrGR9JwT8+8EkJ42e70B6K9lEWFwiOTOBC+6HtbyhvFEvI6rXmdNikfMBgYLCQ3F+7Qpz2tWi7TNw= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-ej1-x631.google.com with SMTP id a640c23a62f3a-a298accc440so497471266b.1 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=1706029413; x=1706634213; darn=sourceware.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=XbS32CALE3KyPeOCmTpOzw+NO4bLAwHs3/pAZU5EuG8=; b=fM67WeMPf0d9vWQrWGt6ggzUzZPAi3DVkdkGadT5Pq/eoG0qqUeJNWQEX1TCgdGeRe o3caGYeVMj08omaxv+OmcgwJyZZ1tPgF6OtNPWRjwLkrywRtUkLbQwxPmnXvpP6PKvBs oQfXSM+fxUOY0F4TQLNH1JEemGgWu+QUPtDDw= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1706029413; x=1706634213; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=XbS32CALE3KyPeOCmTpOzw+NO4bLAwHs3/pAZU5EuG8=; b=IFslUgJmb7hdFDfZtHp6JwEvMO8Nn/qsSj9Sj4RaVuRpxWDJf0Zq6hWKj1+sY9SS9E LFvNps3fnHWR1ZeQJeDW97Pxq+4f8lYZ/Md0oMboIN9OV8nJj7MrJmt5xGNwFc66k8ny oDAnWd4XMspleYpKq2peYvSXkotB3dxEwxcLKlwfPxdSPmRW02384EOvAT9Wsu+zU9Kz F/8wLAoYbMS35ED0OS3JaCCZl4Tiw15kM2W1NREYRdAO9aFOQCA054ipjIAd98Jo7h5Z h9TH/WXhjlC1LZxVek5ZkRx2jhiN3+gtmAub43acXQiQtKFPJe706yzZHOnBaStDjafg lYHA== X-Gm-Message-State: AOJu0YzAq89qVqhayHdLfp9hhSMpwWOKGpVRxbe9/e6CSyvtZDyDD37p ZHHg9Ho2X5IgSnZkEQtRosRS/6wP3x0/tlvNlvzHDAFKa980PbFBbFvGcbxCNJtVOJuuklbf05N 9tQ== X-Google-Smtp-Source: AGHT+IHcTRT5BwAUerDM7uPE41MeVF5j2bx4X5QwScI3+XlvpYE+qFmRX94REcnSKrkH/psTUwV/rQ== X-Received: by 2002:a17:907:d30d:b0:a2f:ca46:fc8d with SMTP id vg13-20020a170907d30d00b00a2fca46fc8dmr138945ejc.17.1706029413269; Tue, 23 Jan 2024 09:03:33 -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 2/4] gdb/symtab: reuse last segment lookup name info Date: Tue, 23 Jan 2024 18:03:23 +0100 Message-Id: <20240123170325.752251-2-dmitry.neverov@jetbrains.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20240123170325.752251-1-dmitry.neverov@jetbrains.com> References: <20240123170325.752251-1-dmitry.neverov@jetbrains.com> MIME-Version: 1.0 X-Spam-Status: No, score=-10.9 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+patchwork=sourceware.org@sourceware.org Create lookup_name_info for the last segment in a qualified name outside the loop. The symbol_name_match_type::SEARCH_NAME is used to avoid redundant demangling: it was already performed in lookup_name_without_params.split_name(). --- gdb/dwarf2/read.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gdb/dwarf2/read.c b/gdb/dwarf2/read.c index b125b2e69f0..f539eb878a3 100644 --- a/gdb/dwarf2/read.c +++ b/gdb/dwarf2/read.c @@ -16638,6 +16638,9 @@ cooked_index_functions::expand_symtabs_matching = lookup_name_without_params.split_name (lang); std::string last_name (name_vec.back ()); + lookup_name_info last_segment_lookup_name ( + last_name, symbol_name_match_type::SEARCH_NAME, completing, true); + for (const cooked_index_entry *entry : table->find (last_name, completing)) { @@ -16698,9 +16701,6 @@ cooked_index_functions::expand_symtabs_matching 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); From patchwork Tue Jan 23 17:03:24 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Dmitry.Neverov" X-Patchwork-Id: 84626 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 7BC07385840E for ; Tue, 23 Jan 2024 17:04:45 +0000 (GMT) X-Original-To: gdb-patches@sourceware.org Delivered-To: gdb-patches@sourceware.org Received: from mail-ed1-x534.google.com (mail-ed1-x534.google.com [IPv6:2a00:1450:4864:20::534]) by sourceware.org (Postfix) with ESMTPS id 671E13858C2F for ; Tue, 23 Jan 2024 17:03:36 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 671E13858C2F 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 671E13858C2F Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::534 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1706029428; cv=none; b=eXAVIcxqL7BacluBgHa+Ew46jZAwYHXstud6DnddzdQKlNJlMP3FAFQ2mNtm6zdKtDQizQPb/at1pZjah5tQ16WIGsNwMb4IluKQB8O+atXbQA2G+qwRJdBErCCSJkdWCSd9qpKKMI3xtjaRje4r/bssTgx5Qjyz+VDasiGsbFs= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1706029428; c=relaxed/simple; bh=4ZD8WxGztLjbZpTodUGqDTy6yTE+prbHGm2Fs1DfOUo=; h=DKIM-Signature:From:To:Subject:Date:Message-Id:MIME-Version; b=Ks1ox8aau2sEdgTDIVwo+zyd0SMFDcXlzNFDq7c7XfVKBfzfTV0JXio1IO/mZhMMs8R95hyCBZ8gugFrMFeIj6XhFaW7wVq78zKNtatKitTlAuUl1SGxTQqDDmbOU1Jg7d8+YKirqxO2I+n2sQaYbBT8wJdZ7pwNdM57S9oW4Ks= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-ed1-x534.google.com with SMTP id 4fb4d7f45d1cf-557dcb0f870so5400158a12.2 for ; Tue, 23 Jan 2024 09:03:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jetbrains.com; s=googleapps; t=1706029414; x=1706634214; darn=sourceware.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Da+qopKB7EYOoXuYSll0O4LssqfjvwoLKZwTOUEwskY=; b=J6R/PGtcOban6RsHM//xG/OotJzhO9qVGbujk3Af9EnfjgfO7Z2TZmH7ODAAhm/IvT a3azhTLnZKQW9e06+jFetpBS+zm5GbhR16Jbk+2kTyK9oX46BzwT0oB2SXT5ZcXiFgGb ydObPSfSWl48/s4jfJRuC+DJ1oBeZwMDKHF4k= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1706029414; x=1706634214; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Da+qopKB7EYOoXuYSll0O4LssqfjvwoLKZwTOUEwskY=; b=R7/zYsbpiizTnHjBwjNb3W72zGLmapGm8/kL2k6jEmEv8neprIKZND4rqQZAKn+9Nc RVXqZ5RjH/tQpL2ihfzwewYkN5aWgEPySI1Up8HemKUMce978g3Nk3b/raU660Xe5d+n mgSslMVii8fCTmIQj9wTCfE5NoEAEQpXRf8dTKb9yG4SZctq3HdRDmDoC8/j1BAOdE2s daXS+slIxRA60v4PuWSJOQUnrCbHpX11F65gDDTTczsnrFpe/vivD0Ru2Qt2R3R5Lj4Q saaATq9fhxOTnnqkVgV+RJheE7vwAUFiD5pVDOK4q2NZbxdxiaWbebpiy/+r/2VIEW0Q Jplw== X-Gm-Message-State: AOJu0YxzQqwsFuQbWvOcZHPBSKJqJc25ZbcdM3JYai7f1Y5kDTt3SZsl iQuh9yke/6Kw9qCymKGY9K2AvQ0G0D10bxxSTBahJXxzXlLCSFqHzOjMNXyDWUU1iEg74dwwerr SNA== X-Google-Smtp-Source: AGHT+IHdtMlMaTPVJzgeHKzOcaAkx8HzVEHsjNP+507KHEK7WheQUkb/uiRVXJmat/kQrvAFeP74iA== X-Received: by 2002:a17:906:f949:b0:a27:cf29:5380 with SMTP id ld9-20020a170906f94900b00a27cf295380mr73886ejb.149.1706029413983; Tue, 23 Jan 2024 09:03:33 -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.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 23 Jan 2024 09:03:33 -0800 (PST) From: Dmitry Neverov To: gdb-patches@sourceware.org Cc: dmitry.neverov@jetbrains.com Subject: [RFC v2][PR symtab/30520 3/4] gdb/symtab: compute match_type outside the loop Date: Tue, 23 Jan 2024 18:03:24 +0100 Message-Id: <20240123170325.752251-3-dmitry.neverov@jetbrains.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20240123170325.752251-1-dmitry.neverov@jetbrains.com> References: <20240123170325.752251-1-dmitry.neverov@jetbrains.com> MIME-Version: 1.0 X-Spam-Status: No, score=-11.5 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+patchwork=sourceware.org@sourceware.org It will be used for all segments in a qualified name, not only the last one. --- gdb/dwarf2/read.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/gdb/dwarf2/read.c b/gdb/dwarf2/read.c index f539eb878a3..338e2bfbfa7 100644 --- a/gdb/dwarf2/read.c +++ b/gdb/dwarf2/read.c @@ -16632,6 +16632,9 @@ cooked_index_functions::expand_symtabs_matching language_ada }; + symbol_name_match_type match_type + = lookup_name_without_params.match_type (); + for (enum language lang : unique_styles) { std::vector name_vec @@ -16689,8 +16692,6 @@ cooked_index_functions::expand_symtabs_matching "x::a::b". */ if (symbol_matcher == nullptr) { - symbol_name_match_type match_type - = lookup_name_without_params.match_type (); if ((match_type == symbol_name_match_type::FULL || (lang != language_ada && match_type == symbol_name_match_type::EXPRESSION))) From patchwork Tue Jan 23 17:03:25 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Dmitry.Neverov" X-Patchwork-Id: 84625 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 E6ED33858285 for ; Tue, 23 Jan 2024 17:04:23 +0000 (GMT) X-Original-To: gdb-patches@sourceware.org Delivered-To: gdb-patches@sourceware.org Received: from mail-ej1-x633.google.com (mail-ej1-x633.google.com [IPv6:2a00:1450:4864:20::633]) by sourceware.org (Postfix) with ESMTPS id 360BA3858C2C for ; Tue, 23 Jan 2024 17:03:36 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 360BA3858C2C 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 360BA3858C2C Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::633 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1706029427; cv=none; b=SH9RldVIJq+nrUTUc7rK5OWYOZvN505mlhg/1YPiYtJoVRQv9KCPGjL+E0efMp1UY/+vqR//buael8TTzmpMIkFFr48wWsKDX0DDKNio1qVII3qGPIhh/5Iszkgb+LvaHfiL84RPIXqJHSDkf0jhYmXvWwTD1rzO7KYUVjZSgaE= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1706029427; c=relaxed/simple; bh=Da9+GYxQe1ZfPinLGuqLFiowPrgQLSD08i754EDy9bg=; h=DKIM-Signature:From:To:Subject:Date:Message-Id:MIME-Version; b=qpiCZlTAAvJpHvNZ9wef484GYdeqZMvFO0KlMuffNx4jDKRYvDaVkuXElTC1mpPS3S4n47A2scKfYWHgWBMqIpv/CJZsIXxzyeqjourQhV+U8f2kphPLSDpaAZ9BRk3MWdvzvO3gQ53JmgYlroBBf++FSFdpRxNguUvSylPsON4= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-ej1-x633.google.com with SMTP id a640c23a62f3a-a28ab7ae504so377805866b.3 for ; Tue, 23 Jan 2024 09:03:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jetbrains.com; s=googleapps; t=1706029414; x=1706634214; darn=sourceware.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Gr4D9ONMRV2SUXM0PazBjsskWQmop3oZttBK8T9oPKs=; b=Nu8+dLMipjooYZSeYyTnrlUTXoobxt3XjHqjbFyxzbcbKkMW6XjJf4+WqvT/Qd4wMi tsAktJneSMhq4dp+TBh7Ny/Q8z4iBAuEqB00A0DKzw0YPAQMoMD1BxcnTQUo60s6YJxg vDkffxy3+S37UoO1c3zNYT06CI3dcBQuegIkU= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1706029414; x=1706634214; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Gr4D9ONMRV2SUXM0PazBjsskWQmop3oZttBK8T9oPKs=; b=q5BCGx4tgOn9ar/yAPTOW4Y2vfGSNbsRNqr2yfBkl3brej5ndt28AcUO4t50qRGHk1 JWr2HS7XjgeBwEuBvssXCobZxShLWtJYvlHt5M2NpWkBP05S8O9sMQrYjH/YMvsSb+mh p9yXcndt6vfoi4MwV4b3ThH1piHU+zMqYP1iX4jiAMYreJEY9pj7OHgGWjoYNCvuPvFH YfJFjADrUljLi6A4VR5JiWCjTXNlltIon4fu68Pr+5iL2uxIDgv+YKiKfrAY6U/e6Ugr 0O+UjskN3l+WHIsIxNnvdwl6YZXTgBOWRJ8VpTW5wFCqiDp8xOfhteBKk7y44Vd+irFt GsJQ== X-Gm-Message-State: AOJu0Ywy6bxk1dJy0egbprXNUo5dprXGDL2Q6CiMoptetl3GNba1wukf w3geUgCKpDCbEY0lWzPkd6VMmTH7IFVQaRaXlMhXqtSUyRGDmh9E3l+nJfEyolo2Roc2JXOa4J/ kxw== X-Google-Smtp-Source: AGHT+IFS/LpqtqHgNA6rQB38qql4JZzmJhH7l4JtmymZhnLVTLXzMggwhsMyK3z2PDlKVvEprbLbyw== X-Received: by 2002:a17:906:4894:b0:a30:9db2:b2e with SMTP id v20-20020a170906489400b00a309db20b2emr112563ejq.71.1706029414685; Tue, 23 Jan 2024 09:03:34 -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.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 23 Jan 2024 09:03:34 -0800 (PST) From: Dmitry Neverov To: gdb-patches@sourceware.org Cc: dmitry.neverov@jetbrains.com Subject: [RFC v2][PR symtab/30520 4/4] gdb/symtab: use symbol name matcher for all segments in a qualified name Date: Tue, 23 Jan 2024 18:03:25 +0100 Message-Id: <20240123170325.752251-4-dmitry.neverov@jetbrains.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20240123170325.752251-1-dmitry.neverov@jetbrains.com> References: <20240123170325.752251-1-dmitry.neverov@jetbrains.com> MIME-Version: 1.0 X-Spam-Status: No, score=-11.3 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+patchwork=sourceware.org@sourceware.org --- gdb/dwarf2/read.c | 38 ++++++++++++++++++++++++++------------ 1 file changed, 26 insertions(+), 12 deletions(-) diff --git a/gdb/dwarf2/read.c b/gdb/dwarf2/read.c index 338e2bfbfa7..08a834e141b 100644 --- a/gdb/dwarf2/read.c +++ b/gdb/dwarf2/read.c @@ -16637,14 +16637,17 @@ cooked_index_functions::expand_symtabs_matching for (enum language lang : unique_styles) { - std::vector name_vec - = lookup_name_without_params.split_name (lang); - std::string last_name (name_vec.back ()); - - lookup_name_info last_segment_lookup_name ( - last_name, symbol_name_match_type::SEARCH_NAME, completing, true); + std::vector name_vec = lookup_name_without_params + .split_name (lang); + std::vector name_str_vec (name_vec.begin (), name_vec.end ()); + std::vector segment_lookup_names; + segment_lookup_names.reserve (name_vec.size ()); + for (auto &segment_name : name_str_vec) { + segment_lookup_names.emplace_back ( + segment_name, symbol_name_match_type::SEARCH_NAME, completing, true); + } - for (const cooked_index_entry *entry : table->find (last_name, + for (const cooked_index_entry *entry : table->find (name_str_vec.back (), completing)) { QUIT; @@ -16674,13 +16677,24 @@ cooked_index_functions::expand_symtabs_matching { /* If we ran out of entries, or if this segment doesn't match, this did not match. */ - if (parent == nullptr - || strncmp (parent->name, name_vec[i - 1].data (), - name_vec[i - 1].length ()) != 0) + if (parent == nullptr) { found = false; break; } + if (parent->lang != language_unknown) + { + const language_defn *lang_def = language_def (parent->lang); + symbol_name_matcher_ftype *name_matcher + = lang_def->get_symbol_name_matcher + (segment_lookup_names[i-1]); + if (!name_matcher (parent->canonical, + segment_lookup_names[i-1], nullptr)) + { + found = false; + break; + } + } parent = parent->get_parent (); } @@ -16704,9 +16718,9 @@ cooked_index_functions::expand_symtabs_matching const language_defn *lang_def = language_def (entry->lang); symbol_name_matcher_ftype *name_matcher = lang_def->get_symbol_name_matcher - (last_segment_lookup_name); + (segment_lookup_names.back ()); if (!name_matcher (entry->canonical, - last_segment_lookup_name, nullptr)) + segment_lookup_names.back (), nullptr)) continue; } }