From patchwork Tue Jan 16 16:07:52 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Dmitry.Neverov" X-Patchwork-Id: 84189 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 253243857B83 for ; Tue, 16 Jan 2024 16:08:58 +0000 (GMT) X-Original-To: gdb-patches@sourceware.org Delivered-To: gdb-patches@sourceware.org Received: from mail-ej1-x630.google.com (mail-ej1-x630.google.com [IPv6:2a00:1450:4864:20::630]) by sourceware.org (Postfix) with ESMTPS id 8EAEB3858C41 for ; Tue, 16 Jan 2024 16:08:18 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 8EAEB3858C41 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 8EAEB3858C41 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::630 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1705421309; cv=none; b=GFNs+GCdlbT7jG/bFDrnI5z/yT+jzqPMx21oYT9q/9UsYdPS8rvzEqQ8iUHTz3xkERX6HwlgB0wDdqWRyv8Bji5Uht2wpgNbprK2Y83eiWHrjl3/bmeY8dlUPZhhowWCiBgXuBN3eIiAUlDXIe6l5EJlLb7ke15XWazaGOtRMok= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1705421309; c=relaxed/simple; bh=lzfsYt61gepQYMMc8mpXaBcNwQv7PhhzaYPwncj0KO8=; h=DKIM-Signature:From:To:Subject:Date:Message-Id:MIME-Version; b=ewNPGVmyXRtcHw24jvT475LY89zo+nFl5BeqBXhLkBfogJwgN1igfBz2qOscnJUWcEm4b/TtXJZNiiid0o1bRPotSc++VPqjB5oLT0XEgwV+7T0YWSPso+Ub7Nc0Ypu57My/w3HZ1AhnpTSyv7nTXwP8rl2jEVXWTdZDnWtOZbs= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-ej1-x630.google.com with SMTP id a640c23a62f3a-a293f2280c7so1174788066b.1 for ; Tue, 16 Jan 2024 08:08:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jetbrains.com; s=googleapps; t=1705421297; x=1706026097; 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=31gO0zeqGYV43WFo1tdPE5OdGs815t7x9Dv2nlxomNk=; b=PZamo9XuLubH18YVD4+K8Vp36IqxN9tJgpPgW4XbGlfffgYBG8T6nE9upqvxNvZhur vnq5F0XZAGfNrGW4OvQsRUxW9xVQlKZczJnPIuSLc5P43WsKMmUZldW/LKfF0soiiGF1 kHBOWoOP49P5IlJwl6HhgCVcJ0vli867G4JXA= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1705421297; x=1706026097; 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=31gO0zeqGYV43WFo1tdPE5OdGs815t7x9Dv2nlxomNk=; b=NRGNZOHia/8Vs/xqAN2S7ZJI0rsI1KwkPn80iL5dGHK3ElvtaTO96M+Bg9FrJi4L9H PzPp/AQ5ZfjGrGcKlOSimUTG1b1UciXWdmXLr61MjCmZy/hZ45InWxkzx5ioUKm/1bt+ XhZNemCJ3EM9L/3X/7JRYGrNSddFBGnY3zxrw8cDQWwIK25Fj0W61oUA1IaREms36m+c aXu2eMRos2bq1jIEkFQuErG0sHhVAqhl+BhCnzYsXqfm/HJrK1yO2xM1WG4rnOLRf+zj p2qEYYWSvV9TKaEHuOMhyAp/ags2SwV/CD5RdM84jgRb4s6oATZPRkXqKgVSHdXrwe+5 XhXg== X-Gm-Message-State: AOJu0Yx4ODt3rKhtXPR2TlPSom9M2IeYLql3BC8xvkx8hU9MWJXWYLv0 dZcGT1XMegHF8zBv0zffTBAOzrAGh2ru9xIyJNLrG9seQ9i9 X-Google-Smtp-Source: AGHT+IGjdsKSVL9otrzRy3OWeVwpnPNU9yntXL19UfoXk7gQVYRlnyVwytynouzrIWyqnqszGyH6Zw== X-Received: by 2002:a17:907:b96:b0:a2a:424b:62e1 with SMTP id ey22-20020a1709070b9600b00a2a424b62e1mr1490089ejc.283.1705421296917; Tue, 16 Jan 2024 08:08:16 -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 q8-20020a170906360800b00a2bd52d2a84sm6598200ejb.200.2024.01.16.08.08.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Jan 2024 08:08:16 -0800 (PST) From: Dmitry Neverov To: gdb-patches@sourceware.org Cc: dmitry.neverov@jetbrains.com Subject: [RFC][PR symtab/30520] gdb/symtab: check name matches before expanding a CU Date: Tue, 16 Jan 2024 17:07:52 +0100 Message-Id: <20240116160752.372201-1-dmitry.neverov@jetbrains.com> X-Mailer: git-send-email 2.39.2 MIME-Version: 1.0 X-Spam-Status: No, score=-10.6 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 | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/gdb/dwarf2/read.c b/gdb/dwarf2/read.c index 1b5e566bb01..ccb32f152b0 100644 --- a/gdb/dwarf2/read.c +++ b/gdb/dwarf2/read.c @@ -16882,9 +16882,24 @@ 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; + + enum language cu_lang = entry->per_cu->lang (false); + if (cu_lang != language_unknown) + { + const language_defn *lang_def = language_def (cu_lang); + symbol_name_matcher_ftype *name_matcher + = lang_def->get_symbol_name_matcher + (lookup_name_without_params); + auto_obstack temp_storage; + if (!name_matcher (entry->full_name(&temp_storage), + lookup_name_without_params, nullptr)) + continue; + } + } } else {