From patchwork Tue Dec 12 17:32:27 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom de Vries X-Patchwork-Id: 81978 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 163E1385C416 for ; Tue, 12 Dec 2023 17:32:40 +0000 (GMT) X-Original-To: gdb-patches@sourceware.org Delivered-To: gdb-patches@sourceware.org Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.223.131]) by sourceware.org (Postfix) with ESMTPS id 89F3C3858C2F for ; Tue, 12 Dec 2023 17:32:23 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 89F3C3858C2F Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=suse.de Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=suse.de ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 89F3C3858C2F Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=195.135.223.131 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1702402344; cv=none; b=QSfaGkxy7KmGcpCyH21QaWYiZQC15GhQoDZIOMUM8lSGBA8lpLBM3ccM0/41tgamEqC7q8xSMiciHLdtGb4qolnwKDATMsjtiof5oAHckQnOF01IBia53iy4pCq7koi7+b9FAuwS53CxsLIW7iMclj81TfOjv8eEiiusiZY2xZ8= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1702402344; c=relaxed/simple; bh=X4INIc+CsTVFJDc6PzgMzgcQYgaSs2Ks8bjv25QM6nY=; h=DKIM-Signature:DKIM-Signature:DKIM-Signature:DKIM-Signature:From: To:Subject:Date:Message-Id:MIME-Version; b=fY2UhDDCu7U93b+XdQHgYAhv8LcU17auQIIHV3ecBc4ExHCQeznntdE0SaLvev9Br0WpJHFcyaF0LBK5CL0/mVpnrIH0YXTQp7NIGNvDYYUNLheWOaLXN9PmNR1ZOBrI318H9UElqr885iSOMxasl7YTDcHse1ui1iadBaHsI14= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org [IPv6:2a07:de40:b281:104:10:150:64:97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id EA0441FB8F for ; Tue, 12 Dec 2023 17:32:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1702402342; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=gfTSh13tl7tmIkW+/zx/rlrwVoN8X7M7NhEkrdHNtCM=; b=h1pQse16D9Ny335XPeft2P6KqRx5N1skby1V25sKiqlpDIphG5meCEV5OFlpnSwqMo80R1 IJqcFlQgVDEttYiM33DuqEmkEeFdanrHcKufOxHc9WHBzpgoM4Z9Szv5L01nEYJJumMx80 txS7XWjHlGUjCO9vScr3yerDtP/4vYk= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1702402342; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=gfTSh13tl7tmIkW+/zx/rlrwVoN8X7M7NhEkrdHNtCM=; b=e0nuXNvlTyDU96kVW9pPCOFSXH9JmzSN5V6lkPEh1vGMxHRec3FxAdotE/eFLGL6Yom6lQ xaDI/hIFFuCC7SAg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1702402341; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=gfTSh13tl7tmIkW+/zx/rlrwVoN8X7M7NhEkrdHNtCM=; b=irmcR/1SLbbFjq9UMxVm9UkWyNxztc9njY2ezZCe3VGMeM1POZnsx5B/CLESYnIjk5ADbk WKJW25wI4h4zpWBNxZJ0KlxyUD9oSsbZFf8Iys42MBQNnqDcmPGdUL5ZrpSpxf/RxIk6V5 LEyao5IymMUy4smtCZeRoKFPIXiO7Hk= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1702402341; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=gfTSh13tl7tmIkW+/zx/rlrwVoN8X7M7NhEkrdHNtCM=; b=KRiEIqqxOOiN3ze8YlwymgbINu2Wl3coSyFDirztjuE5qe91QC9RrzlY9ycpCkpdf1rd4n HU9XUWbQf4FdFTDw== Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id D2A65139E7 for ; Tue, 12 Dec 2023 17:32:21 +0000 (UTC) Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167]) by imap1.dmz-prg2.suse.org with ESMTPSA id qLs8MiWZeGVaPQAAD6G6ig (envelope-from ) for ; Tue, 12 Dec 2023 17:32:21 +0000 From: Tom de Vries To: gdb-patches@sourceware.org Subject: [PATCH v2 01/13] [gdb/symtab] Refactor condition in scan_attributes Date: Tue, 12 Dec 2023 18:32:27 +0100 Message-Id: <20231212173239.16793-2-tdevries@suse.de> X-Mailer: git-send-email 2.35.3 In-Reply-To: <20231212173239.16793-1-tdevries@suse.de> References: <20231212173239.16793-1-tdevries@suse.de> MIME-Version: 1.0 X-Spam-Level: *** X-Spam-Score: 3.71 X-Spam-Level: Authentication-Results: smtp-out2.suse.de; dkim=pass header.d=suse.de header.s=susede2_rsa header.b="irmcR/1S"; dkim=pass header.d=suse.de header.s=susede2_ed25519 header.b=KRiEIqqx; dmarc=pass (policy=none) header.from=suse.de; spf=softfail (smtp-out2.suse.de: 2a07:de40:b281:104:10:150:64:97 is neither permitted nor denied by domain of tdevries@suse.de) smtp.mailfrom=tdevries@suse.de X-Rspamd-Server: rspamd2 X-Spamd-Result: default: False [-3.00 / 50.00]; RCVD_VIA_SMTP_AUTH(0.00)[]; BAYES_SPAM(4.51)[98.48%]; SPAMHAUS_XBL(0.00)[2a07:de40:b281:104:10:150:64:97:from]; R_MISSING_CHARSET(2.50)[]; TO_DN_NONE(0.00)[]; BROKEN_CONTENT_TYPE(1.50)[]; R_SPF_SOFTFAIL(0.00)[~all:c]; RCVD_COUNT_THREE(0.00)[3]; DKIM_TRACE(0.00)[suse.de:+]; DMARC_POLICY_ALLOW(0.00)[suse.de,none]; MX_GOOD(-0.01)[]; DMARC_POLICY_ALLOW_WITH_FAILURES(-0.50)[]; NEURAL_HAM_SHORT(-0.20)[-1.000]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+]; ARC_NA(0.00)[]; R_DKIM_ALLOW(-0.20)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; FROM_HAS_DN(0.00)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; NEURAL_HAM_LONG(-1.00)[-1.000]; MIME_GOOD(-0.10)[text/plain]; PREVIOUSLY_DELIVERED(0.00)[gdb-patches@sourceware.org]; DWL_DNSWL_HI(-3.50)[suse.de:dkim]; RCPT_COUNT_ONE(0.00)[1]; DKIM_SIGNED(0.00)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; WHITELIST_DMARC(-7.00)[suse.de:D:+]; MID_CONTAINS_FROM(1.00)[]; DBL_BLOCKED_OPENRESOLVER(0.00)[suse.de:dkim]; FUZZY_BLOCKED(0.00)[rspamd.com]; RCVD_TLS_ALL(0.00)[] X-Spam-Score: -3.00 X-Rspamd-Queue-Id: EA0441FB8F X-Spam-Flag: NO X-Spam-Status: No, score=-12.4 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, 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 In scan_attributes there's code: ... if (new_reader->cu == reader->cu && new_info_ptr > watermark_ptr && *parent_entry == nullptr) ... else if (*parent_entry == nullptr) ... ... that uses the "*parent_entry == nullptr" condition twice. Make this somewhat more readable by factoring out the condition: ... if (*parent_entry == nullptr) { if (new_reader->cu == reader->cu && new_info_ptr > watermark_ptr) ... else ... } ... This also allows us to factor out "form_addr (origin_offset, origin_is_dwz)". Tested on x86_64-linux. --- gdb/dwarf2/read.c | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/gdb/dwarf2/read.c b/gdb/dwarf2/read.c index 37cabe52ecc..a6700ba3b40 100644 --- a/gdb/dwarf2/read.c +++ b/gdb/dwarf2/read.c @@ -16170,15 +16170,17 @@ cooked_indexer::scan_attributes (dwarf2_per_cu_data *scanning_per_cu, const gdb_byte *new_info_ptr = (new_reader->buffer + to_underlying (origin_offset)); - if (new_reader->cu == reader->cu - && new_info_ptr > watermark_ptr - && *parent_entry == nullptr) - *maybe_defer = form_addr (origin_offset, origin_is_dwz); - else if (*parent_entry == nullptr) + if (*parent_entry == nullptr) { - CORE_ADDR lookup = form_addr (origin_offset, origin_is_dwz); - void *obj = m_die_range_map.find (lookup); - *parent_entry = static_cast (obj); + CORE_ADDR addr = form_addr (origin_offset, origin_is_dwz); + if (new_reader->cu == reader->cu + && new_info_ptr > watermark_ptr) + *maybe_defer = addr; + else + { + void *obj = m_die_range_map.find (addr); + *parent_entry = static_cast (obj); + } } unsigned int bytes_read; From patchwork Tue Dec 12 17:32:28 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom de Vries X-Patchwork-Id: 81981 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 9E1263856951 for ; Tue, 12 Dec 2023 17:32:59 +0000 (GMT) X-Original-To: gdb-patches@sourceware.org Delivered-To: gdb-patches@sourceware.org Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.223.130]) by sourceware.org (Postfix) with ESMTPS id 871E63858C2A for ; Tue, 12 Dec 2023 17:32:23 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 871E63858C2A Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=suse.de Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=suse.de ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 871E63858C2A Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=195.135.223.130 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1702402345; cv=none; b=Xti9LZSuhtBKHaYLmNZBvhgaOhgzasIuLdyQgoC9YwKeio30nmrgwsDxkHJxrOCK8Zh5v901Cln8KkCpg53PwsVDVcXN658YXDpnLwCUL0gs67odKQM6+BYbrYmY3P/UjrCIqkx4hHhp4JjXFUHL4oMjQqtQYFsE42mmUkC4AiE= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1702402345; c=relaxed/simple; bh=8hukvbik9nnDhMa7y+s2TbOl/l3mRj5gVIg2zvogeEg=; h=DKIM-Signature:DKIM-Signature:DKIM-Signature:DKIM-Signature:From: To:Subject:Date:Message-Id:MIME-Version; b=RELbEft+GFlAH5I1+yEELrwbtFbaCOlcoGPMK76sTXSX2X7m6Xv1XVoLwiqnrrp+UAFi39idX4chIW4ULH+7qIxNzdPtBNf5vEuC0eBcCTpABra5lJHbWQOnEkA7CbWRItCttxGtG02IFoYz6Jbk6np9WPQET/D3F4JXtJGd6P4= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org [IPv6:2a07:de40:b281:104:10:150:64:97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id 0E8F621DA5 for ; Tue, 12 Dec 2023 17:32:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1702402342; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=eVFA4BwaVJpdVO3D/0psJLkcvHpR7oG1/c7v4Tf4cOM=; b=Qfn5hEfFs7Euo0R9ikfgSUzbd5UQOlpz1/NPlhCcFssZNTHjKaEYQ8G1xZgCD78Vf8a7Q0 N3ozJ96rltZ4CETMsTzk1idSEUSg8Ow9504vWCVvY87LRuLJPL8BGUbxPZD2/op4H7ctcH tHHHTK+Gas9r7uLueIp2n97Lgmb9L6o= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1702402342; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=eVFA4BwaVJpdVO3D/0psJLkcvHpR7oG1/c7v4Tf4cOM=; b=OrhjvTOMaAol6eZa3FSPqm3HVFHPMECzm0UhFI9eNEF7RWwQjuduhdhowL/GmIhEAdd1J0 zj8NH8k4zOugh/Cw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1702402342; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=eVFA4BwaVJpdVO3D/0psJLkcvHpR7oG1/c7v4Tf4cOM=; b=Qfn5hEfFs7Euo0R9ikfgSUzbd5UQOlpz1/NPlhCcFssZNTHjKaEYQ8G1xZgCD78Vf8a7Q0 N3ozJ96rltZ4CETMsTzk1idSEUSg8Ow9504vWCVvY87LRuLJPL8BGUbxPZD2/op4H7ctcH tHHHTK+Gas9r7uLueIp2n97Lgmb9L6o= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1702402342; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=eVFA4BwaVJpdVO3D/0psJLkcvHpR7oG1/c7v4Tf4cOM=; b=OrhjvTOMaAol6eZa3FSPqm3HVFHPMECzm0UhFI9eNEF7RWwQjuduhdhowL/GmIhEAdd1J0 zj8NH8k4zOugh/Cw== Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id EC3C913A9A for ; Tue, 12 Dec 2023 17:32:21 +0000 (UTC) Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167]) by imap1.dmz-prg2.suse.org with ESMTPSA id IKprOCWZeGVaPQAAD6G6ig (envelope-from ) for ; Tue, 12 Dec 2023 17:32:21 +0000 From: Tom de Vries To: gdb-patches@sourceware.org Subject: [PATCH v2 02/13] [gdb/symtab] Factor out m_die_range_map usage Date: Tue, 12 Dec 2023 18:32:28 +0100 Message-Id: <20231212173239.16793-3-tdevries@suse.de> X-Mailer: git-send-email 2.35.3 In-Reply-To: <20231212173239.16793-1-tdevries@suse.de> References: <20231212173239.16793-1-tdevries@suse.de> MIME-Version: 1.0 X-Spam-Score: 17.73 X-Rspamd-Server: rspamd1 X-Spamd-Result: default: False [2.79 / 50.00]; RCVD_VIA_SMTP_AUTH(0.00)[]; BAYES_SPAM(5.10)[100.00%]; SPAMHAUS_XBL(0.00)[2a07:de40:b281:104:10:150:64:97:from]; R_MISSING_CHARSET(2.50)[]; TO_DN_NONE(0.00)[]; BROKEN_CONTENT_TYPE(1.50)[]; R_SPF_SOFTFAIL(0.00)[~all:c]; RCVD_COUNT_THREE(0.00)[3]; DKIM_TRACE(0.00)[suse.de:+]; DMARC_POLICY_ALLOW(0.00)[suse.de,none]; MX_GOOD(-0.01)[]; DMARC_POLICY_ALLOW_WITH_FAILURES(-0.50)[]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+]; ARC_NA(0.00)[]; R_DKIM_ALLOW(-0.20)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; SPAM_FLAG(5.00)[]; FROM_HAS_DN(0.00)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; NEURAL_HAM_LONG(-1.00)[-1.000]; MIME_GOOD(-0.10)[text/plain]; PREVIOUSLY_DELIVERED(0.00)[gdb-patches@sourceware.org]; DWL_DNSWL_HI(-3.50)[suse.de:dkim]; RCPT_COUNT_ONE(0.00)[1]; DKIM_SIGNED(0.00)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; WHITELIST_DMARC(-7.00)[suse.de:D:+]; MID_CONTAINS_FROM(1.00)[]; DBL_BLOCKED_OPENRESOLVER(0.00)[suse.de:dkim]; FUZZY_BLOCKED(0.00)[rspamd.com]; RCVD_TLS_ALL(0.00)[] X-Rspamd-Queue-Id: 0E8F621DA5 X-Spam-Flag: NO Authentication-Results: smtp-out1.suse.de; dkim=pass header.d=suse.de header.s=susede2_rsa header.b=Qfn5hEfF; dkim=pass header.d=suse.de header.s=susede2_ed25519 header.b=OrhjvTOM; dmarc=pass (policy=none) header.from=suse.de; spf=softfail (smtp-out1.suse.de: 2a07:de40:b281:104:10:150:64:97 is neither permitted nor denied by domain of tdevries@suse.de) smtp.mailfrom=tdevries@suse.de X-Spamd-Bar: ++ X-Spam-Score: 2.79 X-Spam-Status: No, score=-12.4 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, 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 Factor out usage of cooked_indexer::m_die_range_map into new class parent_map with member functions find_parent and set_parent, and static member function form_addr. Tested on x86_64-linux. --- gdb/dwarf2/cooked-index.h | 32 +++++++++++++++++++++++++++ gdb/dwarf2/read.c | 46 ++++++++++++++++++++------------------- 2 files changed, 56 insertions(+), 22 deletions(-) diff --git a/gdb/dwarf2/cooked-index.h b/gdb/dwarf2/cooked-index.h index 5675ea68bb8..fa274b37c20 100644 --- a/gdb/dwarf2/cooked-index.h +++ b/gdb/dwarf2/cooked-index.h @@ -239,6 +239,38 @@ struct cooked_index_entry : public allocate_on_obstack bool for_name) const; }; +class parent_map +{ +public: + /* A helper function to turn a section offset into an address that + can be used in a parent_map. */ + static CORE_ADDR form_addr (sect_offset offset, bool is_dwz) + { + CORE_ADDR value = to_underlying (offset); + if (is_dwz) + value |= ((CORE_ADDR) 1) << (8 * sizeof (CORE_ADDR) - 1); + return value; + } + + /* Find the parent of DIE LOOKUP. */ + const cooked_index_entry *find_parent (CORE_ADDR lookup) const + { + const void *obj = m_parent_map.find (lookup); + return static_cast (obj); + } + + /* Set the parent of DIES in range [START, END] to PARENT_ENTRY. */ + void set_parent (CORE_ADDR start, CORE_ADDR end, + const cooked_index_entry *parent_entry) + { + m_parent_map.set_empty (start, end, (void *)parent_entry); + } + +private: + /* An addrmap that maps from section offsets to cooked_index_entry *. */ + addrmap_mutable m_parent_map; +}; + class cooked_index; /* An index of interesting DIEs. This is "cooked", in contrast to a diff --git a/gdb/dwarf2/read.c b/gdb/dwarf2/read.c index a6700ba3b40..806cc5902b3 100644 --- a/gdb/dwarf2/read.c +++ b/gdb/dwarf2/read.c @@ -4541,16 +4541,6 @@ class cooked_indexer private: - /* A helper function to turn a section offset into an address that - can be used in an addrmap. */ - CORE_ADDR form_addr (sect_offset offset, bool is_dwz) - { - CORE_ADDR value = to_underlying (offset); - if (is_dwz) - value |= ((CORE_ADDR) 1) << (8 * sizeof (CORE_ADDR) - 1); - return value; - } - /* A helper function to scan the PC bounds of READER and record them in the storage's addrmap. */ void check_bounds (cutu_reader *reader); @@ -4618,7 +4608,20 @@ class cooked_indexer /* An addrmap that maps from section offsets (see the form_addr method) to newly-created entries. See m_deferred_entries to understand this. */ - addrmap_mutable m_die_range_map; + parent_map m_die_range_map; + + /* Find the parent of DIE LOOKUP. */ + const cooked_index_entry *find_parent (CORE_ADDR lookup) const + { + return m_die_range_map.find_parent (lookup); + } + + /* Set the parent of DIES in range [START, END] to PARENT_ENTRY. */ + void set_parent (CORE_ADDR start, CORE_ADDR end, + const cooked_index_entry *parent_entry) + { + m_die_range_map.set_parent (start, end, parent_entry); + } /* A single deferred entry. */ struct deferred_entry @@ -16172,15 +16175,13 @@ cooked_indexer::scan_attributes (dwarf2_per_cu_data *scanning_per_cu, if (*parent_entry == nullptr) { - CORE_ADDR addr = form_addr (origin_offset, origin_is_dwz); + CORE_ADDR addr + = parent_map::form_addr (origin_offset, origin_is_dwz); if (new_reader->cu == reader->cu && new_info_ptr > watermark_ptr) *maybe_defer = addr; else - { - void *obj = m_die_range_map.find (addr); - *parent_entry = static_cast (obj); - } + *parent_entry = find_parent (addr); } unsigned int bytes_read; @@ -16298,11 +16299,13 @@ cooked_indexer::recurse (cutu_reader *reader, { /* Both start and end are inclusive, so use both "+ 1" and "- 1" to limit the range to the children of parent_entry. */ - CORE_ADDR start = form_addr (parent_entry->die_offset + 1, - reader->cu->per_cu->is_dwz); - CORE_ADDR end = form_addr (sect_offset (info_ptr - 1 - reader->buffer), + CORE_ADDR start + = parent_map::form_addr (parent_entry->die_offset + 1, + reader->cu->per_cu->is_dwz); + CORE_ADDR end + = parent_map::form_addr (sect_offset (info_ptr - 1 - reader->buffer), reader->cu->per_cu->is_dwz); - m_die_range_map.set_empty (start, end, (void *) parent_entry); + set_parent (start, end, parent_entry); } return info_ptr; @@ -16475,8 +16478,7 @@ cooked_indexer::make_index (cutu_reader *reader) for (const auto &entry : m_deferred_entries) { - void *obj = m_die_range_map.find (entry.spec_offset); - cooked_index_entry *parent = static_cast (obj); + const cooked_index_entry *parent = find_parent (entry.spec_offset); m_index_storage->add (entry.die_offset, entry.tag, entry.flags, entry.name, parent, m_per_cu); } From patchwork Tue Dec 12 17:32:29 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom de Vries X-Patchwork-Id: 81979 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 DE056385B534 for ; Tue, 12 Dec 2023 17:32:40 +0000 (GMT) X-Original-To: gdb-patches@sourceware.org Delivered-To: gdb-patches@sourceware.org Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.223.131]) by sourceware.org (Postfix) with ESMTPS id 980B9385841A for ; Tue, 12 Dec 2023 17:32:23 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 980B9385841A Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=suse.de Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=suse.de ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 980B9385841A Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=195.135.223.131 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1702402344; cv=none; b=uw4WiKATyILGI0ff+dbZnNaLit97CN5h/IkQNFrqXnT3yzTIduVwvqRtklLrysHRZbcJaHUQ0Mzse6crUQzeAYbKOca8cHW+WA2RWlOC8OJMsSHMGYcVCNOZWNSEu7b4VJaIVm5eh3AGUUcQClMqgVCFciCTuKgHmYoTAIw9evI= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1702402344; c=relaxed/simple; bh=ulgAyle5F+1fnovX+K7vDHH1FGcJXIw+wL/DSRXSIv8=; h=DKIM-Signature:DKIM-Signature:DKIM-Signature:DKIM-Signature:From: To:Subject:Date:Message-Id:MIME-Version; b=ADJYvVZOBQEGut9Zt2ljj1nEoVeJWw1iKrVn/n/gKb6nBU7Hl1wMynXjE7p8jucLDHP5y76NfGpc0MoKvxUv5/GmGF5KWoF3A0K/9qIuY+fSH5C759TQOKcxJ3lVyJBKkToJ+wGBWYP8lLRxIYRkPlptnS5A2OReY6wBcfdDOKw= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org [IPv6:2a07:de40:b281:104:10:150:64:97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id 27E151FB90 for ; Tue, 12 Dec 2023 17:32:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1702402342; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=E5KVx4jDHjumIQLtN0Ql69wU7OjYVl/EllThshC4wN8=; b=wXrw9B6v8MIt9V4YICHelG+qB0rJOg6jcuXakR8SjL6+RzBENMYmpVWfqSQgz8BQc/I5dZ iFfN4EZMv4B32t58Pgzm812D6B8OB5M1HrpDE7QROtCwuxNxQKiDmjjvpSQPMKNGxcRWpD B7iBpBH+R86NERPRf6V42iyXM0VPFJ8= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1702402342; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=E5KVx4jDHjumIQLtN0Ql69wU7OjYVl/EllThshC4wN8=; b=UVx9BVLHcmk1PGOjtkxT5DscnKTxn9jd36C8pUZ6HKEDoXxx3+JFziAKfR0PRCgkrq6p1b ZOPp2w80ff0nXhCg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1702402342; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=E5KVx4jDHjumIQLtN0Ql69wU7OjYVl/EllThshC4wN8=; b=wXrw9B6v8MIt9V4YICHelG+qB0rJOg6jcuXakR8SjL6+RzBENMYmpVWfqSQgz8BQc/I5dZ iFfN4EZMv4B32t58Pgzm812D6B8OB5M1HrpDE7QROtCwuxNxQKiDmjjvpSQPMKNGxcRWpD B7iBpBH+R86NERPRf6V42iyXM0VPFJ8= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1702402342; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=E5KVx4jDHjumIQLtN0Ql69wU7OjYVl/EllThshC4wN8=; b=UVx9BVLHcmk1PGOjtkxT5DscnKTxn9jd36C8pUZ6HKEDoXxx3+JFziAKfR0PRCgkrq6p1b ZOPp2w80ff0nXhCg== Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 10DCD13A9B for ; Tue, 12 Dec 2023 17:32:22 +0000 (UTC) Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167]) by imap1.dmz-prg2.suse.org with ESMTPSA id QMDoAiaZeGVaPQAAD6G6ig (envelope-from ) for ; Tue, 12 Dec 2023 17:32:22 +0000 From: Tom de Vries To: gdb-patches@sourceware.org Subject: [PATCH v2 03/13] [gdb/symtab] Handle nullptr parent in parent_map::set_parent Date: Tue, 12 Dec 2023 18:32:29 +0100 Message-Id: <20231212173239.16793-4-tdevries@suse.de> X-Mailer: git-send-email 2.35.3 In-Reply-To: <20231212173239.16793-1-tdevries@suse.de> References: <20231212173239.16793-1-tdevries@suse.de> MIME-Version: 1.0 X-Spam-Level: ********* X-Spam-Score: 9.09 X-Spam-Level: Authentication-Results: smtp-out2.suse.de; dkim=pass header.d=suse.de header.s=susede2_rsa header.b=wXrw9B6v; dkim=pass header.d=suse.de header.s=susede2_ed25519 header.b=UVx9BVLH; dmarc=pass (policy=none) header.from=suse.de; spf=softfail (smtp-out2.suse.de: 2a07:de40:b281:104:10:150:64:97 is neither permitted nor denied by domain of tdevries@suse.de) smtp.mailfrom=tdevries@suse.de X-Rspamd-Server: rspamd2 X-Spamd-Result: default: False [-2.41 / 50.00]; RCVD_VIA_SMTP_AUTH(0.00)[]; BAYES_SPAM(5.10)[99.99%]; SPAMHAUS_XBL(0.00)[2a07:de40:b281:104:10:150:64:97:from]; R_MISSING_CHARSET(2.50)[]; TO_DN_NONE(0.00)[]; BROKEN_CONTENT_TYPE(1.50)[]; R_SPF_SOFTFAIL(0.00)[~all:c]; RCVD_COUNT_THREE(0.00)[3]; DKIM_TRACE(0.00)[suse.de:+]; DMARC_POLICY_ALLOW(0.00)[suse.de,none]; MX_GOOD(-0.01)[]; DMARC_POLICY_ALLOW_WITH_FAILURES(-0.50)[]; NEURAL_HAM_SHORT(-0.20)[-1.000]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+]; ARC_NA(0.00)[]; R_DKIM_ALLOW(-0.20)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; FROM_HAS_DN(0.00)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; NEURAL_HAM_LONG(-1.00)[-1.000]; MIME_GOOD(-0.10)[text/plain]; PREVIOUSLY_DELIVERED(0.00)[gdb-patches@sourceware.org]; DWL_DNSWL_HI(-3.50)[suse.de:dkim]; RCPT_COUNT_ONE(0.00)[1]; DKIM_SIGNED(0.00)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; WHITELIST_DMARC(-7.00)[suse.de:D:+]; MID_CONTAINS_FROM(1.00)[]; DBL_BLOCKED_OPENRESOLVER(0.00)[suse.de:dkim]; FUZZY_BLOCKED(0.00)[rspamd.com]; RCVD_TLS_ALL(0.00)[] X-Spam-Score: -2.41 X-Rspamd-Queue-Id: 27E151FB90 X-Spam-Flag: NO X-Spam-Status: No, score=-12.4 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, 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 Set_parent uses m_die_range_map.set_empty, which doesn't allow parent_entry == nullptr. So it may be necessary to guard calls to set_parent with "if (parent_entry != nullptr)". Fix this by handling the parent_entry == nullptr case in set_parent. Tested on x86_64-linux. --- gdb/dwarf2/cooked-index.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/gdb/dwarf2/cooked-index.h b/gdb/dwarf2/cooked-index.h index fa274b37c20..3c43717fc33 100644 --- a/gdb/dwarf2/cooked-index.h +++ b/gdb/dwarf2/cooked-index.h @@ -263,7 +263,9 @@ class parent_map void set_parent (CORE_ADDR start, CORE_ADDR end, const cooked_index_entry *parent_entry) { - m_parent_map.set_empty (start, end, (void *)parent_entry); + /* Calling set_empty with nullptr is currently not allowed. */ + if (parent_entry != nullptr) + m_parent_map.set_empty (start, end, (void *)parent_entry); } private: From patchwork Tue Dec 12 17:32:30 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom de Vries X-Patchwork-Id: 81980 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 45E333857706 for ; Tue, 12 Dec 2023 17:32:43 +0000 (GMT) X-Original-To: gdb-patches@sourceware.org Delivered-To: gdb-patches@sourceware.org Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.223.130]) by sourceware.org (Postfix) with ESMTPS id B787F3858C78 for ; Tue, 12 Dec 2023 17:32:23 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org B787F3858C78 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=suse.de Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=suse.de ARC-Filter: OpenARC Filter v1.0.0 sourceware.org B787F3858C78 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=195.135.223.130 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1702402344; cv=none; b=BfnGFkbj9MkMRSoIufhJvkHp0mQAHKLVmrP8U168Qv+PSBrCtJJ0HAJohce6V3C33DBnELvekLoKIHXDN6fInkWz8V+peA9NQllFnnOF/U+WtKrpnJ+4b74OmhHg+CRUSpP2S5w4aqRHzA/BpV+1UlxKORq4lnM/sOs7XWC0qGk= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1702402344; c=relaxed/simple; bh=ciUkUy8b7CAJTbojAu2CWTzsAq+3zsviyaAZ2I5jKfk=; h=DKIM-Signature:DKIM-Signature:DKIM-Signature:DKIM-Signature:From: To:Subject:Date:Message-Id:MIME-Version; b=MbKFTp1f6k+mCPZkZZk0iuSFDCy1tpoCwV/WdVZvKdfsd4liZ7wrXUOe+E0vY5R7asVYZ0Lbjr5iBQZCCXNVK4B1KIfMMkZAJEskBKXdUYZRvpv3gaDKHsvC9XNfrpfwD+/oADPUrVsfoO+dgG57P5mnOgvd/6nrW1GaENNum3M= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org [IPv6:2a07:de40:b281:104:10:150:64:97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id 42CF721DAE for ; Tue, 12 Dec 2023 17:32:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1702402342; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=UPTVDoSw7//mVea2Y9xEbqJ1ZpMeuA9tibpxWxPME5Q=; b=KsGujdGdgKKijonNC65Tp56cS+6fUeZW2LQtouTV0PIu5bM8q6chOoKtnMFbNt9No1HaCf R2ulatY0nCuEbAk31+5nV/xhcmgZYY2ApQBgt37LeetAhWXOFNpwwL4ES/8TgxNGlq7a9i vma3Y5nuXf22qaWVpSUMOCJLWoDmSb8= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1702402342; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=UPTVDoSw7//mVea2Y9xEbqJ1ZpMeuA9tibpxWxPME5Q=; b=ChtgUajbqyYDGrpLw+JzyFM1bEP88z3ndgpzLM448hiREBmFhSCD+wpag0mwhAIpBZaNSP sf9K7Zx5ZlT/IAAQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1702402342; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=UPTVDoSw7//mVea2Y9xEbqJ1ZpMeuA9tibpxWxPME5Q=; b=KsGujdGdgKKijonNC65Tp56cS+6fUeZW2LQtouTV0PIu5bM8q6chOoKtnMFbNt9No1HaCf R2ulatY0nCuEbAk31+5nV/xhcmgZYY2ApQBgt37LeetAhWXOFNpwwL4ES/8TgxNGlq7a9i vma3Y5nuXf22qaWVpSUMOCJLWoDmSb8= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1702402342; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=UPTVDoSw7//mVea2Y9xEbqJ1ZpMeuA9tibpxWxPME5Q=; b=ChtgUajbqyYDGrpLw+JzyFM1bEP88z3ndgpzLM448hiREBmFhSCD+wpag0mwhAIpBZaNSP sf9K7Zx5ZlT/IAAQ== Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 2A77D13A9D for ; Tue, 12 Dec 2023 17:32:22 +0000 (UTC) Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167]) by imap1.dmz-prg2.suse.org with ESMTPSA id yJ8gCSaZeGVaPQAAD6G6ig (envelope-from ) for ; Tue, 12 Dec 2023 17:32:22 +0000 From: Tom de Vries To: gdb-patches@sourceware.org Subject: [PATCH v2 04/13] [gdb/symtab] Factor out m_deferred_entries usage Date: Tue, 12 Dec 2023 18:32:30 +0100 Message-Id: <20231212173239.16793-5-tdevries@suse.de> X-Mailer: git-send-email 2.35.3 In-Reply-To: <20231212173239.16793-1-tdevries@suse.de> References: <20231212173239.16793-1-tdevries@suse.de> MIME-Version: 1.0 X-Spam-Level: ******************** X-Spam-Score: 20.84 X-Spam-Level: X-Rspamd-Server: rspamd1 X-Rspamd-Queue-Id: 42CF721DAE X-Spam-Flag: NO Authentication-Results: smtp-out1.suse.de; dkim=pass header.d=suse.de header.s=susede2_rsa header.b=KsGujdGd; dkim=pass header.d=suse.de header.s=susede2_ed25519 header.b=ChtgUajb; dmarc=pass (policy=none) header.from=suse.de; spf=softfail (smtp-out1.suse.de: 2a07:de40:b281:104:10:150:64:97 is neither permitted nor denied by domain of tdevries@suse.de) smtp.mailfrom=tdevries@suse.de X-Spamd-Result: default: False [-2.31 / 50.00]; RCVD_VIA_SMTP_AUTH(0.00)[]; SPAMHAUS_XBL(0.00)[2a07:de40:b281:104:10:150:64:97:from]; R_MISSING_CHARSET(2.50)[]; TO_DN_NONE(0.00)[]; BROKEN_CONTENT_TYPE(1.50)[]; R_SPF_SOFTFAIL(0.00)[~all:c]; RCVD_COUNT_THREE(0.00)[3]; DKIM_TRACE(0.00)[suse.de:+]; DMARC_POLICY_ALLOW(0.00)[suse.de,none]; MX_GOOD(-0.01)[]; DMARC_POLICY_ALLOW_WITH_FAILURES(-0.50)[]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+]; BAYES_HAM(-0.00)[29.98%]; ARC_NA(0.00)[]; R_DKIM_ALLOW(-0.20)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; SPAM_FLAG(5.00)[]; FROM_HAS_DN(0.00)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; NEURAL_HAM_LONG(-1.00)[-1.000]; MIME_GOOD(-0.10)[text/plain]; PREVIOUSLY_DELIVERED(0.00)[gdb-patches@sourceware.org]; DWL_DNSWL_HI(-3.50)[suse.de:dkim]; RCPT_COUNT_ONE(0.00)[1]; DKIM_SIGNED(0.00)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; WHITELIST_DMARC(-7.00)[suse.de:D:+]; MID_CONTAINS_FROM(1.00)[]; DBL_BLOCKED_OPENRESOLVER(0.00)[suse.de:dkim]; FUZZY_BLOCKED(0.00)[rspamd.com]; RCVD_TLS_ALL(0.00)[] X-Spam-Score: -2.31 X-Spam-Status: No, score=-12.4 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, 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 Factor out usage of cooked_indexer::m_deferred_entries in new member functions defer_entry, handle_deferred_entries and resolve_deferred_entry. Tested on x86_64-linux. --- gdb/dwarf2/read.c | 35 ++++++++++++++++++++++++++++------- 1 file changed, 28 insertions(+), 7 deletions(-) diff --git a/gdb/dwarf2/read.c b/gdb/dwarf2/read.c index 806cc5902b3..cf71d4c55ce 100644 --- a/gdb/dwarf2/read.c +++ b/gdb/dwarf2/read.c @@ -4641,6 +4641,32 @@ class cooked_indexer we'll know the containing context of all the DIEs that we might have scanned. This vector stores these deferred entries. */ std::vector m_deferred_entries; + + /* Defer creating a cooked_index_entry corresponding to deferred_entry DE. */ + void defer_entry (const deferred_entry &de) + { + m_deferred_entries.push_back (de); + } + + /* Create a cooked_index_entry corresponding to deferred_entry DE with + parent PARENT_ENTRY. */ + const cooked_index_entry *resolve_deferred_entry + (const deferred_entry &de, const cooked_index_entry *parent_entry) + { + return m_index_storage->add (de.die_offset, de.tag, de.flags, de.name, + parent_entry, m_per_cu); + } + + /* Create cooked_index_entries for the deferred entries. */ + void handle_deferred_entries () + { + for (const auto &entry : m_deferred_entries) + { + const cooked_index_entry *parent_entry + = find_parent (entry.spec_offset); + resolve_deferred_entry (entry, parent_entry); + } + } }; /* Subroutine of dwarf2_build_psymtabs_hard to simplify it. @@ -16371,7 +16397,7 @@ cooked_indexer::index_dies (cutu_reader *reader, if (name != nullptr) { if (defer != 0) - m_deferred_entries.push_back ({ + defer_entry ({ this_die, name, defer, abbrev->tag, flags }); else @@ -16476,12 +16502,7 @@ cooked_indexer::make_index (cutu_reader *reader) return; index_dies (reader, reader->info_ptr, nullptr, false); - for (const auto &entry : m_deferred_entries) - { - const cooked_index_entry *parent = find_parent (entry.spec_offset); - m_index_storage->add (entry.die_offset, entry.tag, entry.flags, - entry.name, parent, m_per_cu); - } + handle_deferred_entries (); } /* An implementation of quick_symbol_functions for the cooked DWARF From patchwork Tue Dec 12 17:32:31 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom de Vries X-Patchwork-Id: 81988 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 2881A3861011 for ; Tue, 12 Dec 2023 17:33:48 +0000 (GMT) X-Original-To: gdb-patches@sourceware.org Delivered-To: gdb-patches@sourceware.org Received: from smtp-out1.suse.de (smtp-out1.suse.de [IPv6:2a07:de40:b251:101:10:150:64:1]) by sourceware.org (Postfix) with ESMTPS id 4AA61385800D for ; Tue, 12 Dec 2023 17:32:25 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 4AA61385800D Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=suse.de Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=suse.de ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 4AA61385800D Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a07:de40:b251:101:10:150:64:1 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1702402348; cv=none; b=fgBL/rnyE1IbfdLNB+d06SbyQ4jQ9tPvswHKJmNb4KX1+xg6IxXvQr6fThKZFE9QFqmm0lif0pOLIdWMBkq82qBhUrY8pRwCZLLlbjfhhf6O9dW0K0vYSOC41tRjP8KexBOU9jGqmbkSduqnKLV6VMQWW+zZPwdlyClsTrdkXK0= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1702402348; c=relaxed/simple; bh=n++Fp9xmRvb8be8QajVGWIuW12dXBy4OL8zkT14PoVQ=; h=DKIM-Signature:DKIM-Signature:DKIM-Signature:DKIM-Signature:From: To:Subject:Date:Message-Id:MIME-Version; b=t2iOtk1GSS4mY9oE06Q1PoA4AksUfmhsjSOO6ArJ+Ono84s4D8rPASbjcG511eCx/LTovgDWsku7oHci7+zTnUeh/VlDn/dbi41kMryL0IhXqzUsSTSafuqT3JuaIJ/LZbad79EnXj6BohHgOR7Si7WPGjHhsacBxPP1nDVFFy4= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org [10.150.64.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id 3F5D121DB2 for ; Tue, 12 Dec 2023 17:32:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1702402343; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=EX3R1IVj79oH2Jh16m7UP/nxayxoaAALxWX/mkS0+qM=; b=BEj0Ox34kT366RoSMMfLTRZ6z1tMs9R6R8uSDHbxiT5KhCPjKRkTdi34u02X/PSZGCPPne rwqLVlVoTnvOxlxw5sOW+Fq3Su9f8+GlmGD6hBjJuEQG2casZyeFfceF3ka8m1t/wsQMgw SMq2FA6zG7a4cyuKwLASdvMny5diy94= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1702402343; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=EX3R1IVj79oH2Jh16m7UP/nxayxoaAALxWX/mkS0+qM=; b=KcKlGrl4xFdLlHNbr1L1zxkV6Tnkq5cGl3qEI/Us+Sxe9F62nWJvximnpM1XmCoX218LAF EJ0Hrrb6l8jzZHAA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1702402343; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=EX3R1IVj79oH2Jh16m7UP/nxayxoaAALxWX/mkS0+qM=; b=BEj0Ox34kT366RoSMMfLTRZ6z1tMs9R6R8uSDHbxiT5KhCPjKRkTdi34u02X/PSZGCPPne rwqLVlVoTnvOxlxw5sOW+Fq3Su9f8+GlmGD6hBjJuEQG2casZyeFfceF3ka8m1t/wsQMgw SMq2FA6zG7a4cyuKwLASdvMny5diy94= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1702402343; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=EX3R1IVj79oH2Jh16m7UP/nxayxoaAALxWX/mkS0+qM=; b=KcKlGrl4xFdLlHNbr1L1zxkV6Tnkq5cGl3qEI/Us+Sxe9F62nWJvximnpM1XmCoX218LAF EJ0Hrrb6l8jzZHAA== Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 442CC13AA0 for ; Tue, 12 Dec 2023 17:32:22 +0000 (UTC) Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167]) by imap1.dmz-prg2.suse.org with ESMTPSA id sCB6DyaZeGVaPQAAD6G6ig (envelope-from ) for ; Tue, 12 Dec 2023 17:32:22 +0000 From: Tom de Vries To: gdb-patches@sourceware.org Subject: [PATCH v2 05/13] [gdb/symtab] Resolve deferred entries, inter-shard case Date: Tue, 12 Dec 2023 18:32:31 +0100 Message-Id: <20231212173239.16793-6-tdevries@suse.de> X-Mailer: git-send-email 2.35.3 In-Reply-To: <20231212173239.16793-1-tdevries@suse.de> References: <20231212173239.16793-1-tdevries@suse.de> MIME-Version: 1.0 X-Spam-Level: X-Spam-Score: 0.90 Authentication-Results: smtp-out1.suse.de; none X-Spam-Level: X-Spam-Score: 0.70 X-Spamd-Result: default: False [0.70 / 50.00]; ARC_NA(0.00)[]; RCVD_VIA_SMTP_AUTH(0.00)[]; FROM_HAS_DN(0.00)[]; R_MISSING_CHARSET(2.50)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; MIME_GOOD(-0.10)[text/plain]; PREVIOUSLY_DELIVERED(0.00)[gdb-patches@sourceware.org]; BROKEN_CONTENT_TYPE(1.50)[]; RCPT_COUNT_ONE(0.00)[1]; NEURAL_HAM_LONG(-1.00)[-1.000]; RCVD_COUNT_THREE(0.00)[3]; TO_DN_NONE(0.00)[]; DKIM_SIGNED(0.00)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; NEURAL_HAM_SHORT(-0.20)[-1.000]; MID_CONTAINS_FROM(1.00)[]; DBL_BLOCKED_OPENRESOLVER(0.00)[sourceware.org:url]; FUZZY_BLOCKED(0.00)[rspamd.com]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+]; RCVD_TLS_ALL(0.00)[]; BAYES_HAM(-3.00)[100.00%] X-Spam-Flag: NO X-Spam-Status: No, score=-12.4 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, 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 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 Generically solve the case of inter-CU dependencies, including inter-shard dependencies: - mark deferred entries in new data structure m_deferred, - return &parent_map::deferred in find_parent for deferred entries, - defer all intra-CU dependencies that depend on deferred entries, - defer all inter-CU dependencies (note that two subsequent patches implement optimizations to deal with this more optimally), - move m_die_range_map and m_deferred_dies to cooked_index_shard, and - move handle_deferred_dies to the cooked_index, where it is called in the constructor, and update it to handle the intra-shard case. Handling units from the .debug_info section alongside units from the .debug_types section requires us to extend form_addr to take is_debug_types into account. Tested on x86_64-linux. PR symtab/30846 Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=30846 --- gdb/dwarf2/cooked-index.c | 77 +++++++++++++++++++++++ gdb/dwarf2/cooked-index.h | 105 ++++++++++++++++++++++++++++++- gdb/dwarf2/read.c | 128 ++++++++++++++++++++++---------------- 3 files changed, 254 insertions(+), 56 deletions(-) diff --git a/gdb/dwarf2/cooked-index.c b/gdb/dwarf2/cooked-index.c index ba77f9cb373..ba37d4a820c 100644 --- a/gdb/dwarf2/cooked-index.c +++ b/gdb/dwarf2/cooked-index.c @@ -228,6 +228,12 @@ cooked_index_entry::write_scope (struct obstack *storage, /* See cooked-index.h. */ +cooked_index_entry parent_map::deferred((sect_offset)0, (dwarf_tag)0, + (cooked_index_flag)0, nullptr, + nullptr, nullptr); + +/* See cooked-index.h. */ + const cooked_index_entry * cooked_index_shard::add (sect_offset die_offset, enum dwarf_tag tag, cooked_index_flag flags, const char *name, @@ -450,6 +456,8 @@ cooked_index_shard::wait (bool allow_quit) const cooked_index::cooked_index (vec_type &&vec) : m_vector (std::move (vec)) { + handle_deferred_entries (); + for (auto &idx : m_vector) idx->finalize (); @@ -648,6 +656,75 @@ cooked_index::maybe_write_index (dwarf2_per_bfd *per_bfd, global_index_cache.store (per_bfd, ctx); } +/* See cooked-index.h. */ + +const cooked_index_entry * +cooked_index_shard::resolve_deferred_entry + (const deferred_entry &de, const cooked_index_entry *parent_entry) +{ + reset_parent_deferred (parent_map::form_addr (de.die_offset, de.per_cu_2->is_dwz, + de.per_cu_2->is_debug_types)); + return add (de.die_offset, de.tag, de.flags, de.name, + parent_entry, de.per_cu); +} + +/* See cooked-index.h. */ + +const cooked_index_entry * +cooked_index::find_parent_deferred_entry + (const cooked_index_shard::deferred_entry &entry) const +{ + const cooked_index_entry *parent_entry = nullptr; + for (auto &parent_map_shard : m_vector) + { + auto res = parent_map_shard->find_parent (entry.spec_offset); + if (res != nullptr) + { + parent_entry = res; + break; + } + } + + return parent_entry; +} + +/* See cooked-index.h. */ + +void +cooked_index::handle_deferred_entries () +{ + bool changed; + bool deferred; + do + { + deferred = false; + changed = false; + for (auto &shard : m_vector) + for (auto it = shard->m_deferred_entries->begin (); + it != shard->m_deferred_entries->end (); ) + { + const cooked_index_entry *parent_entry + = find_parent_deferred_entry (*it); + if (parent_entry == &parent_map::deferred) + { + deferred = true; + it++; + continue; + } + shard->resolve_deferred_entry (*it, parent_entry); + it = shard->m_deferred_entries->erase (it); + changed = true; + } + } + while (changed && deferred); + + for (auto &shard : m_vector) + { + shard->m_die_range_map.reset (nullptr); + shard->m_deferred_entries.reset (nullptr); + } +} + /* Wait for all the index cache entries to be written before gdb exits. */ static void diff --git a/gdb/dwarf2/cooked-index.h b/gdb/dwarf2/cooked-index.h index 3c43717fc33..de54a788c42 100644 --- a/gdb/dwarf2/cooked-index.h +++ b/gdb/dwarf2/cooked-index.h @@ -34,6 +34,7 @@ #include "dwarf2/mapped-index.h" #include "dwarf2/tag.h" #include "gdbsupport/range-chain.h" +#include struct dwarf2_per_cu_data; struct dwarf2_per_bfd; @@ -242,19 +243,29 @@ struct cooked_index_entry : public allocate_on_obstack class parent_map { public: + /* A dummy cooked_index_entry to mark that computing the parent has been + deferred. */ + static cooked_index_entry deferred; + /* A helper function to turn a section offset into an address that can be used in a parent_map. */ - static CORE_ADDR form_addr (sect_offset offset, bool is_dwz) + static CORE_ADDR form_addr (sect_offset offset, bool is_dwz, + bool is_debug_types) { CORE_ADDR value = to_underlying (offset); if (is_dwz) value |= ((CORE_ADDR) 1) << (8 * sizeof (CORE_ADDR) - 1); + if (is_debug_types) + value |= ((CORE_ADDR) 1) << (8 * sizeof (CORE_ADDR) - 2); return value; } /* Find the parent of DIE LOOKUP. */ const cooked_index_entry *find_parent (CORE_ADDR lookup) const { + if (m_deferred.find (lookup) != m_deferred.end ()) + return &parent_map::deferred; + const void *obj = m_parent_map.find (lookup); return static_cast (obj); } @@ -265,12 +276,28 @@ class parent_map { /* Calling set_empty with nullptr is currently not allowed. */ if (parent_entry != nullptr) - m_parent_map.set_empty (start, end, (void *)parent_entry); + { + gdb_assert (parent_entry != &parent_map::deferred); + m_parent_map.set_empty (start, end, (void *)parent_entry); + } + } + + void set_parent_deferred (CORE_ADDR addr) + { + m_deferred.emplace (addr); + } + + void reset_parent_deferred (CORE_ADDR addr) + { + m_deferred.erase (addr); } private: /* An addrmap that maps from section offsets to cooked_index_entry *. */ addrmap_mutable m_parent_map; + + /* DIEs that are deffered. */ + std::unordered_set m_deferred; }; class cooked_index; @@ -285,7 +312,12 @@ class cooked_index; class cooked_index_shard { public: - cooked_index_shard () = default; + cooked_index_shard () + { + m_die_range_map.reset (new parent_map); + m_deferred_entries.reset (new std::vector); + } + DISABLE_COPY_AND_ASSIGN (cooked_index_shard); /* Create a new cooked_index_entry and register it with this object. @@ -329,6 +361,52 @@ class cooked_index_shard for completion, will be returned. */ range find (const std::string &name, bool completing) const; + /* Find the parent of DIE LOOKUP. */ + const cooked_index_entry * + find_parent (CORE_ADDR lookup) const + { + return m_die_range_map->find_parent (lookup); + } + + /* Set the parent of DIES in range [START, END] to PARENT_ENTRY. */ + void set_parent (CORE_ADDR start, CORE_ADDR end, + const cooked_index_entry *parent_entry) + { + m_die_range_map->set_parent (start, end, parent_entry); + } + + void set_parent_deferred (CORE_ADDR addr) + { + m_die_range_map->set_parent_deferred (addr); + } + + void reset_parent_deferred (CORE_ADDR addr) + { + m_die_range_map->reset_parent_deferred (addr); + } + + /* A single deferred entry. See m_deferred_entries. */ + struct deferred_entry + { + sect_offset die_offset; + const char *name; + CORE_ADDR spec_offset; + dwarf_tag tag; + cooked_index_flag flags; + dwarf2_per_cu_data *per_cu; + dwarf2_per_cu_data *per_cu_2; + }; + + /* Defer creating a cooked_index_entry corresponding to DEFERRED. */ + void defer_entry (deferred_entry de) + { + m_deferred_entries->push_back (de); + } + + /* Variant of add that takes a deferred_entry as parameter. */ + const cooked_index_entry *resolve_deferred_entry + (const deferred_entry &entry, const cooked_index_entry *parent_entry); + private: /* Return the entry that is believed to represent the program's @@ -386,6 +464,20 @@ class cooked_index_shard that the 'get' method is never called on this future, only 'wait'. */ gdb::future m_future; + + /* An addrmap that maps from section offsets (see the form_addr + method) to newly-created entries. See m_deferred_entries to + understand this. */ + std::unique_ptr m_die_range_map; + + /* The generated DWARF can sometimes have the declaration for a + method in a class (or perhaps namespace) scope, with the + definition appearing outside this scope... just one of the many + bad things about DWARF. In order to handle this situation, we + defer certain entries until the end of scanning, at which point + we'll know the containing context of all the DIEs that we might + have scanned. This vector stores these deferred entries. */ + std::unique_ptr> m_deferred_entries; }; /* The main index of DIEs. The parallel DIE indexers create @@ -469,6 +561,13 @@ class cooked_index : public dwarf_scanner_base private: + /* Find the parent corresponding to deferred entry ENTRY. */ + const cooked_index_entry *find_parent_deferred_entry + (const cooked_index_shard::deferred_entry &entry) const; + + /* Create cooked_index_entries for the deferred entries. */ + void handle_deferred_entries (); + /* Maybe write the index to the index cache. */ void maybe_write_index (dwarf2_per_bfd *per_bfd, const index_cache_store_context &); diff --git a/gdb/dwarf2/read.c b/gdb/dwarf2/read.c index cf71d4c55ce..ec58125499c 100644 --- a/gdb/dwarf2/read.c +++ b/gdb/dwarf2/read.c @@ -4491,6 +4491,31 @@ class cooked_index_storage return &m_addrmap; } + /* Find the parent of DIE LOOKUP. */ + const cooked_index_entry *find_parent (CORE_ADDR lookup) + { + return m_index->find_parent (lookup); + } + + /* Set the parent of DIES in range [START, END] to PARENT_ENTRY. */ + void set_parent (CORE_ADDR start, CORE_ADDR end, + const cooked_index_entry *parent_entry) + { + m_index->set_parent (start, end, parent_entry); + } + + /* Set the parent of DIE at ADDR as deferred. */ + void set_parent_deferred (CORE_ADDR addr) + { + m_index->set_parent_deferred (addr); + } + + /* Defer creating a cooked_index_entry corresponding to deferred_entry DE. */ + void defer_entry (cooked_index_shard::deferred_entry de) + { + m_index->defer_entry (de); + } + private: /* Hash function for a cutu_reader. */ @@ -4613,59 +4638,26 @@ class cooked_indexer /* Find the parent of DIE LOOKUP. */ const cooked_index_entry *find_parent (CORE_ADDR lookup) const { - return m_die_range_map.find_parent (lookup); + return m_index_storage->find_parent (lookup); } /* Set the parent of DIES in range [START, END] to PARENT_ENTRY. */ void set_parent (CORE_ADDR start, CORE_ADDR end, const cooked_index_entry *parent_entry) { - m_die_range_map.set_parent (start, end, parent_entry); + m_index_storage->set_parent (start, end, parent_entry); } - /* A single deferred entry. */ - struct deferred_entry - { - sect_offset die_offset; - const char *name; - CORE_ADDR spec_offset; - dwarf_tag tag; - cooked_index_flag flags; - }; - - /* The generated DWARF can sometimes have the declaration for a - method in a class (or perhaps namespace) scope, with the - definition appearing outside this scope... just one of the many - bad things about DWARF. In order to handle this situation, we - defer certain entries until the end of scanning, at which point - we'll know the containing context of all the DIEs that we might - have scanned. This vector stores these deferred entries. */ - std::vector m_deferred_entries; - - /* Defer creating a cooked_index_entry corresponding to deferred_entry DE. */ - void defer_entry (const deferred_entry &de) + /* Set the parent of DIE at ADDR as deferred. */ + void set_parent_deferred (CORE_ADDR addr) { - m_deferred_entries.push_back (de); + m_index_storage->set_parent_deferred (addr); } - /* Create a cooked_index_entry corresponding to deferred_entry DE with - parent PARENT_ENTRY. */ - const cooked_index_entry *resolve_deferred_entry - (const deferred_entry &de, const cooked_index_entry *parent_entry) - { - return m_index_storage->add (de.die_offset, de.tag, de.flags, de.name, - parent_entry, m_per_cu); - } - - /* Create cooked_index_entries for the deferred entries. */ - void handle_deferred_entries () + /* Defer creating a cooked_index_entry corresponding to deferred_entry DE. */ + void defer_entry (const cooked_index_shard::deferred_entry &de) { - for (const auto &entry : m_deferred_entries) - { - const cooked_index_entry *parent_entry - = find_parent (entry.spec_offset); - resolve_deferred_entry (entry, parent_entry); - } + m_index_storage->defer_entry (de); } }; @@ -16201,13 +16193,36 @@ cooked_indexer::scan_attributes (dwarf2_per_cu_data *scanning_per_cu, if (*parent_entry == nullptr) { + gdb_assert (reader->cu->per_cu->is_debug_types + == new_reader->cu->per_cu->is_debug_types); CORE_ADDR addr - = parent_map::form_addr (origin_offset, origin_is_dwz); - if (new_reader->cu == reader->cu - && new_info_ptr > watermark_ptr) - *maybe_defer = addr; + = parent_map::form_addr (origin_offset, origin_is_dwz, + reader->cu->per_cu->is_debug_types); + if (new_reader->cu == reader->cu) + { + /* Intra-CU case. */ + if (new_info_ptr > watermark_ptr) + { + /* Defer because origin is not read yet. */ + *maybe_defer = addr; + } + else + { + auto tmp = find_parent (addr); + if (tmp == &parent_map::deferred) + { + /* Defer because origin is deferred. */ + *maybe_defer = addr; + } + else + *parent_entry = tmp; + } + } else - *parent_entry = find_parent (addr); + { + /* Inter-CU case. */ + *maybe_defer = addr; + } } unsigned int bytes_read; @@ -16327,10 +16342,12 @@ cooked_indexer::recurse (cutu_reader *reader, limit the range to the children of parent_entry. */ CORE_ADDR start = parent_map::form_addr (parent_entry->die_offset + 1, - reader->cu->per_cu->is_dwz); + reader->cu->per_cu->is_dwz, + reader->cu->per_cu->is_debug_types); CORE_ADDR end = parent_map::form_addr (sect_offset (info_ptr - 1 - reader->buffer), - reader->cu->per_cu->is_dwz); + reader->cu->per_cu->is_dwz, + reader->cu->per_cu->is_debug_types); set_parent (start, end, parent_entry); } @@ -16397,9 +16414,16 @@ cooked_indexer::index_dies (cutu_reader *reader, if (name != nullptr) { if (defer != 0) - defer_entry ({ - this_die, name, defer, abbrev->tag, flags - }); + { + CORE_ADDR addr + = parent_map::form_addr (this_die, reader->cu->per_cu->is_dwz, + reader->cu->per_cu->is_debug_types); + set_parent_deferred (addr); + defer_entry ({ + this_die, name, defer, abbrev->tag, flags, m_per_cu, + reader->cu->per_cu + }); + } else this_entry = m_index_storage->add (this_die, abbrev->tag, flags, name, this_parent_entry, @@ -16501,8 +16525,6 @@ cooked_indexer::make_index (cutu_reader *reader) if (!reader->comp_unit_die->has_children) return; index_dies (reader, reader->info_ptr, nullptr, false); - - handle_deferred_entries (); } /* An implementation of quick_symbol_functions for the cooked DWARF From patchwork Tue Dec 12 17:32:32 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom de Vries X-Patchwork-Id: 81983 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 9076D385C019 for ; Tue, 12 Dec 2023 17:33:12 +0000 (GMT) X-Original-To: gdb-patches@sourceware.org Delivered-To: gdb-patches@sourceware.org Received: from smtp-out2.suse.de (smtp-out2.suse.de [IPv6:2a07:de40:b251:101:10:150:64:2]) by sourceware.org (Postfix) with ESMTPS id D0D493858029 for ; Tue, 12 Dec 2023 17:32:25 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org D0D493858029 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=suse.de Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=suse.de ARC-Filter: OpenARC Filter v1.0.0 sourceware.org D0D493858029 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a07:de40:b251:101:10:150:64:2 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1702402347; cv=none; b=Pbe7yC2F3etrhZLvjrCvjuXJdebTY4/UTZN/dxQO0TVSpqJI4Tw2qegP8lK5EGQeknnqkJJVxMpbI+Ed0tNwCPso8xwPTKXiU8R78/jljHFw8+WWNDDHI+kj9PR6tV2O15NMy4VzZY/78PSEX+9IFsyhA3HXWRIGoFDU3H3qELU= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1702402347; c=relaxed/simple; bh=9wAltjCW5yDfj/NnWpwNGZgVlXMJ7JAjgv1TVHY4xd8=; h=DKIM-Signature:DKIM-Signature:DKIM-Signature:DKIM-Signature:From: To:Subject:Date:Message-Id:MIME-Version; b=X8fErz5GXiyXAphRoRkJExyPcoP+LlMYJE2ShKUKEFg4mde+hWJ3DDj0tDL0Ix08DA7mrh6RTmGkP056LAQHQCGzgaPhZWjm4agLE9bAI3V9E4+vSic5xihEFR5Aotqg+GgOWXasDWb8T79JBg/JPUJyWBWHEVuff/FrCGPftmg= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org [10.150.64.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id 9EDF01FB9D for ; Tue, 12 Dec 2023 17:32:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1702402343; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=9YKNcqhe3qqtXGNUHj15Lmv3Hk+Ew/xOqySTIb81e50=; b=RxV5IaiuFwiA/6ikTqJLkc3xwFt4hY4j/DwNTISeJlytYw5SHh6Pp/z31L0ohXuYeZJN4L Ai7204IxnzMxoSCpdWXgT1SmbEfMntu0Bped+epmQvEAdWe/E/3dL/icL17SLrBit+mOZr cS6a4KjJNA0NXL3q8PkhFtk6SHLPYgE= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1702402343; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=9YKNcqhe3qqtXGNUHj15Lmv3Hk+Ew/xOqySTIb81e50=; b=IbADzxvlYyNRpG5IouhAM4koqtMjTk2jBecEX3xZyDVm/hKDTmjjfJUSrnmnCDesmsid3z xJeW6gO+qjZx8gAQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1702402343; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=9YKNcqhe3qqtXGNUHj15Lmv3Hk+Ew/xOqySTIb81e50=; b=RxV5IaiuFwiA/6ikTqJLkc3xwFt4hY4j/DwNTISeJlytYw5SHh6Pp/z31L0ohXuYeZJN4L Ai7204IxnzMxoSCpdWXgT1SmbEfMntu0Bped+epmQvEAdWe/E/3dL/icL17SLrBit+mOZr cS6a4KjJNA0NXL3q8PkhFtk6SHLPYgE= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1702402343; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=9YKNcqhe3qqtXGNUHj15Lmv3Hk+Ew/xOqySTIb81e50=; b=IbADzxvlYyNRpG5IouhAM4koqtMjTk2jBecEX3xZyDVm/hKDTmjjfJUSrnmnCDesmsid3z xJeW6gO+qjZx8gAQ== Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 5DD5313A9A for ; Tue, 12 Dec 2023 17:32:22 +0000 (UTC) Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167]) by imap1.dmz-prg2.suse.org with ESMTPSA id IJmuFSaZeGVaPQAAD6G6ig (envelope-from ) for ; Tue, 12 Dec 2023 17:32:22 +0000 From: Tom de Vries To: gdb-patches@sourceware.org Subject: [PATCH v2 06/13] [gdb/testsuite] Add gdb.dwarf2/forward-spec-inter-cu.exp Date: Tue, 12 Dec 2023 18:32:32 +0100 Message-Id: <20231212173239.16793-7-tdevries@suse.de> X-Mailer: git-send-email 2.35.3 In-Reply-To: <20231212173239.16793-1-tdevries@suse.de> References: <20231212173239.16793-1-tdevries@suse.de> MIME-Version: 1.0 X-Spam-Score: 8.80 Authentication-Results: smtp-out2.suse.de; none X-Spam-Score: 8.80 X-Spamd-Result: default: False [8.80 / 50.00]; ARC_NA(0.00)[]; RCVD_VIA_SMTP_AUTH(0.00)[]; BAYES_SPAM(5.10)[100.00%]; FROM_HAS_DN(0.00)[]; R_MISSING_CHARSET(2.50)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; MIME_GOOD(-0.10)[text/plain]; PREVIOUSLY_DELIVERED(0.00)[gdb-patches@sourceware.org]; BROKEN_CONTENT_TYPE(1.50)[]; RCPT_COUNT_ONE(0.00)[1]; NEURAL_HAM_LONG(-1.00)[-1.000]; RCVD_COUNT_THREE(0.00)[3]; TO_DN_NONE(0.00)[]; DKIM_SIGNED(0.00)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; NEURAL_HAM_SHORT(-0.20)[-1.000]; MID_CONTAINS_FROM(1.00)[]; DBL_BLOCKED_OPENRESOLVER(0.00)[gnu.org:url,sourceware.org:url]; FUZZY_BLOCKED(0.00)[rspamd.com]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+]; RCVD_TLS_ALL(0.00)[] X-Spam-Flag: NO X-Spam-Status: No, score=-12.4 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, KAM_SHORT, 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 Add a regression test for PR symtab/30846. Tested on x86_64-linux. Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=30846 --- .../gdb.dwarf2/forward-spec-inter-cu.exp | 103 ++++++++++++++++++ 1 file changed, 103 insertions(+) create mode 100644 gdb/testsuite/gdb.dwarf2/forward-spec-inter-cu.exp diff --git a/gdb/testsuite/gdb.dwarf2/forward-spec-inter-cu.exp b/gdb/testsuite/gdb.dwarf2/forward-spec-inter-cu.exp new file mode 100644 index 00000000000..d8367b0a162 --- /dev/null +++ b/gdb/testsuite/gdb.dwarf2/forward-spec-inter-cu.exp @@ -0,0 +1,103 @@ +# Copyright 2023 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# Check that the DWARF reader works with a a DW_AT_specification that +# refers to a later DIE. Inter-cu variant of forward-spec.exp. + +load_lib dwarf.exp + +# This test can only be run on targets which support DWARF-2 and use gas. +require dwarf2_support + +standard_testfile main.c -debug.S + +# Set up the DWARF for the test. +set asm_file [standard_output_file $srcfile2] +Dwarf::assemble $asm_file { + global srcfile + + declare_labels spec + + cu {} { + DW_TAG_compile_unit { + {DW_AT_language @DW_LANG_C_plus_plus} + } { + # The new indexer has special code to compute the full + # name of an object that uses a specification that appears + # later in the DWARF. + DW_TAG_variable { + {DW_AT_specification %$spec} + {DW_AT_location { + DW_OP_const1u 23 + DW_OP_stack_value + } SPECIAL_expr} + } + } + } + + cu {} { + DW_TAG_compile_unit { + {DW_AT_language @DW_LANG_C_plus_plus} + } { + declare_labels myint + + myint: DW_TAG_base_type { + {DW_AT_byte_size 4 DW_FORM_sdata} + {DW_AT_encoding @DW_ATE_signed} + {DW_AT_name myint} + } + + DW_TAG_namespace { + {DW_AT_name ns} + } { + spec: DW_TAG_variable { + {DW_AT_name v} + {DW_AT_type :$myint} + {DW_AT_declaration 1 DW_FORM_flag_present} + } + } + } + } +} + +if {[build_executable "failed to build executable" ${testfile} \ + [list $srcfile $asm_file] {nodebug}]} { + return -1 +} + +set eol "\r\n" +set ws "\[ \t\]" + +set worker_threads_list {} + +# Exercises the intra-shard case. +lappend worker_threads_list 0 + +# Might exercise the inter-shard case. +lappend worker_threads_list default + +foreach_with_prefix worker_threads $worker_threads_list { + + clean_restart + + if { $worker_threads != "default" } { + gdb_test_no_output "maint set worker-threads $worker_threads" + } + + gdb_load $binfile + + gdb_test "maint print objfiles" "$eol$ws+qualified:$ws+ns::v$eol.*" \ + "v has parent ns" +} From patchwork Tue Dec 12 17:32:33 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom de Vries X-Patchwork-Id: 81986 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 3D7703860778 for ; Tue, 12 Dec 2023 17:33:29 +0000 (GMT) X-Original-To: gdb-patches@sourceware.org Delivered-To: gdb-patches@sourceware.org Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.223.131]) by sourceware.org (Postfix) with ESMTPS id 30BD43857BB5 for ; Tue, 12 Dec 2023 17:32:26 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 30BD43857BB5 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=suse.de Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=suse.de ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 30BD43857BB5 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=195.135.223.131 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1702402347; cv=none; b=OaF4aD4Dnxh7A0TFpbRCvajXtK43MvRnZQzHQYIWNCPmXsYNPz5GfjQZHf+fFjJpB4DnpO7nj75b9u08C1jOcK2IgSqS/qfk/Cv//9HFI6cJ5oYYn+Z8sPN3pCLHQpE57DvOSTF2O7ORhaeAEB648NjLU4/wqv1lLu/fK2fKvUs= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1702402347; c=relaxed/simple; bh=e5Fix0QeAt0IYioK6DILA7QSKAZJot3fENt4pybe8sU=; h=DKIM-Signature:DKIM-Signature:DKIM-Signature:DKIM-Signature:From: To:Subject:Date:Message-Id:MIME-Version; b=ioVNK0hK188ZZ56LBGMYEgr5QDUKOCyx/zsLBOLG5uD6fnW/PjeADz+rtka0VVv4UAickFN/Pe288uYPX17y2w8Jn79eI2vw5Oz4uOIQ0zvTQcshQGIaRtgfOP2rWFgMF8Sw9Ao2H67LNcaz0gutwOzegR7sW6mJ75GmD5CbJbg= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org [10.150.64.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id 468671FB91 for ; Tue, 12 Dec 2023 17:32:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1702402343; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=/xDeedSyGh8pWxX6bkcT3FqjxzURVIrvmEDhDILivvo=; b=JHWOerMbzRm/N18lF7+FAI5TlKrRms7USneom7eLqlxAESy7+4QRq8KH2tlXqChmlGYuTi dbGVxqCLQLJMjB+f4Dla0VAsrSKVICFWSNTUmir76CrgQWGc2e6DSmgGqz6at5umwwkhMp cn61RvynlaaW97amU7HHEVnQKf/aILE= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1702402343; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=/xDeedSyGh8pWxX6bkcT3FqjxzURVIrvmEDhDILivvo=; b=Yl813LD7YxG60NkUPYOKawBkzJPZBCb6+U2zuSU/KbaINiXNKqAC7oTsI48FFVYoIyR3IV kgSMYcpz33d+wICQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1702402343; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=/xDeedSyGh8pWxX6bkcT3FqjxzURVIrvmEDhDILivvo=; b=JHWOerMbzRm/N18lF7+FAI5TlKrRms7USneom7eLqlxAESy7+4QRq8KH2tlXqChmlGYuTi dbGVxqCLQLJMjB+f4Dla0VAsrSKVICFWSNTUmir76CrgQWGc2e6DSmgGqz6at5umwwkhMp cn61RvynlaaW97amU7HHEVnQKf/aILE= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1702402343; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=/xDeedSyGh8pWxX6bkcT3FqjxzURVIrvmEDhDILivvo=; b=Yl813LD7YxG60NkUPYOKawBkzJPZBCb6+U2zuSU/KbaINiXNKqAC7oTsI48FFVYoIyR3IV kgSMYcpz33d+wICQ== Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 76B18139E7 for ; Tue, 12 Dec 2023 17:32:22 +0000 (UTC) Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167]) by imap1.dmz-prg2.suse.org with ESMTPSA id 6ObEGyaZeGVaPQAAD6G6ig (envelope-from ) for ; Tue, 12 Dec 2023 17:32:22 +0000 From: Tom de Vries To: gdb-patches@sourceware.org Subject: [PATCH v2 07/13] [gdb/testsuite] Add gdb.dwarf2/backward-spec-inter-cu.exp Date: Tue, 12 Dec 2023 18:32:33 +0100 Message-Id: <20231212173239.16793-8-tdevries@suse.de> X-Mailer: git-send-email 2.35.3 In-Reply-To: <20231212173239.16793-1-tdevries@suse.de> References: <20231212173239.16793-1-tdevries@suse.de> MIME-Version: 1.0 X-Spam-Score: 8.80 X-Spam-Flag: NO Authentication-Results: smtp-out2.suse.de; none X-Spamd-Result: default: False [9.00 / 50.00]; ARC_NA(0.00)[]; RCVD_VIA_SMTP_AUTH(0.00)[]; BAYES_SPAM(5.10)[100.00%]; FROM_HAS_DN(0.00)[]; R_MISSING_CHARSET(2.50)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; MIME_GOOD(-0.10)[text/plain]; PREVIOUSLY_DELIVERED(0.00)[gdb-patches@sourceware.org]; BROKEN_CONTENT_TYPE(1.50)[]; RCPT_COUNT_ONE(0.00)[1]; NEURAL_HAM_LONG(-1.00)[-1.000]; RCVD_COUNT_THREE(0.00)[3]; TO_DN_NONE(0.00)[]; DKIM_SIGNED(0.00)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; MID_CONTAINS_FROM(1.00)[]; DBL_BLOCKED_OPENRESOLVER(0.00)[gnu.org:url,sourceware.org:url]; FUZZY_BLOCKED(0.00)[rspamd.com]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+]; RCVD_TLS_ALL(0.00)[] X-Spam-Score: 9.00 X-Spam-Status: No, score=-12.4 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, KAM_SHORT, 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 Add another regression test for PR symtab/30846. Tested on x86_64-linux. Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=30846 --- .../gdb.dwarf2/backward-spec-inter-cu.exp | 103 ++++++++++++++++++ 1 file changed, 103 insertions(+) create mode 100644 gdb/testsuite/gdb.dwarf2/backward-spec-inter-cu.exp diff --git a/gdb/testsuite/gdb.dwarf2/backward-spec-inter-cu.exp b/gdb/testsuite/gdb.dwarf2/backward-spec-inter-cu.exp new file mode 100644 index 00000000000..59b3db50dbb --- /dev/null +++ b/gdb/testsuite/gdb.dwarf2/backward-spec-inter-cu.exp @@ -0,0 +1,103 @@ +# Copyright 2023 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# Check that the DWARF reader works with a a DW_AT_specification that +# refers to an earlier DIE. Inter-cu variant of forward-spec.exp. + +load_lib dwarf.exp + +# This test can only be run on targets which support DWARF-2 and use gas. +require dwarf2_support + +standard_testfile main.c -debug.S + +# Set up the DWARF for the test. +set asm_file [standard_output_file $srcfile2] +Dwarf::assemble $asm_file { + global srcfile + + declare_labels spec + + cu {} { + DW_TAG_compile_unit { + {DW_AT_language @DW_LANG_C_plus_plus} + } { + declare_labels myint + + myint: DW_TAG_base_type { + {DW_AT_byte_size 4 DW_FORM_sdata} + {DW_AT_encoding @DW_ATE_signed} + {DW_AT_name myint} + } + + DW_TAG_namespace { + {DW_AT_name ns} + } { + spec: DW_TAG_variable { + {DW_AT_name v} + {DW_AT_type :$myint} + {DW_AT_declaration 1 DW_FORM_flag_present} + } + } + } + } + + cu {} { + DW_TAG_compile_unit { + {DW_AT_language @DW_LANG_C_plus_plus} + } { + # The new indexer has special code to compute the full + # name of an object that uses a specification that appears + # later in the DWARF. + DW_TAG_variable { + {DW_AT_specification %$spec} + {DW_AT_location { + DW_OP_const1u 23 + DW_OP_stack_value + } SPECIAL_expr} + } + } + } +} + +if {[build_executable "failed to build executable" ${testfile} \ + [list $srcfile $asm_file] {nodebug}]} { + return -1 +} + +set eol "\r\n" +set ws "\[ \t\]" + +set worker_threads_list {} + +# Exercises the intra-shard case. +lappend worker_threads_list 0 + +# Might exercise the inter-shard case. +lappend worker_threads_list default + +foreach_with_prefix worker_threads $worker_threads_list { + + clean_restart + + if { $worker_threads != "default" } { + gdb_test_no_output "maint set worker-threads $worker_threads" + } + + gdb_load $binfile + + gdb_test "maint print objfiles" "$eol$ws+qualified:$ws+ns::v$eol.*" \ + "v has parent ns" +} From patchwork Tue Dec 12 17:32:34 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom de Vries X-Patchwork-Id: 81985 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 6A753385C418 for ; Tue, 12 Dec 2023 17:33:25 +0000 (GMT) X-Original-To: gdb-patches@sourceware.org Delivered-To: gdb-patches@sourceware.org Received: from smtp-out2.suse.de (smtp-out2.suse.de [IPv6:2a07:de40:b251:101:10:150:64:2]) by sourceware.org (Postfix) with ESMTPS id 6CA5138582A0 for ; Tue, 12 Dec 2023 17:32:24 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 6CA5138582A0 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=suse.de Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=suse.de ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 6CA5138582A0 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a07:de40:b251:101:10:150:64:2 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1702402346; cv=none; b=CJFBoTT8PDPuL0sUyaPB1rCpJOyIRy2k45NW0xAQwCBvLlI2pkKKAkqAUVX+jOC0MpFAj9jf+t4zRx7TZ5jHfvcHW8YaAM8vrYXyaorJFzn3c4lw2ZnMl0nz/S6Ztu+CiT7cwukXDzG7XnLvhmixM9wVim4j6tnlMQu1OIXIThc= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1702402346; c=relaxed/simple; bh=9DR74faL1AYUKcy5OIzybqTb0fmL1VTZY7UCcgddUDU=; h=DKIM-Signature:DKIM-Signature:DKIM-Signature:DKIM-Signature:From: To:Subject:Date:Message-Id:MIME-Version; b=i94giVE91yIG6+EoaQpTUZtUGGh+MLEAdfW7+S1ZGQDpZb9RxGOOdyRqhPxKTyBDhOLLUs7ct30CtW5wjDIIotcLyiywluz8VbySLf5GkROnh3dRSIF6s26EbzC3R19aN3LS7p34BGnkEo1f69JN3kPbNvGWpfUW5i435NtRRjA= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org [IPv6:2a07:de40:b281:104:10:150:64:97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id A50131FD00 for ; Tue, 12 Dec 2023 17:32:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1702402342; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=ZdgzZFTdA8kZA617qqLtUwVgSYqWMViCpEGfh2rjHSI=; b=NvKwnToH5F6XsegLB8eLDPA9zHtEUeBDUGbvHSuRxCAMX8llbphtXHeFz4SzXvlMuWCELa Z4jtYBnxpfJmvbLjS2nno3/AT1gZe5Yu+3wTucHMd7BgU1QtOZt2OtJZlPPl3xUiFKoqf+ yTb3Ty3dS6VOfJ3cArD1/GSCgmWpO14= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1702402342; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=ZdgzZFTdA8kZA617qqLtUwVgSYqWMViCpEGfh2rjHSI=; b=pYklfZQ0aJLbrVYKETWCCiBur/c36okw3tbwEeAQW0bI6GVHw9suyYw4dvn/YRHwCktUus 7csKoE/ya0HYl7AQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1702402342; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=ZdgzZFTdA8kZA617qqLtUwVgSYqWMViCpEGfh2rjHSI=; b=NvKwnToH5F6XsegLB8eLDPA9zHtEUeBDUGbvHSuRxCAMX8llbphtXHeFz4SzXvlMuWCELa Z4jtYBnxpfJmvbLjS2nno3/AT1gZe5Yu+3wTucHMd7BgU1QtOZt2OtJZlPPl3xUiFKoqf+ yTb3Ty3dS6VOfJ3cArD1/GSCgmWpO14= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1702402342; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=ZdgzZFTdA8kZA617qqLtUwVgSYqWMViCpEGfh2rjHSI=; b=pYklfZQ0aJLbrVYKETWCCiBur/c36okw3tbwEeAQW0bI6GVHw9suyYw4dvn/YRHwCktUus 7csKoE/ya0HYl7AQ== Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 9020513A9B for ; Tue, 12 Dec 2023 17:32:22 +0000 (UTC) Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167]) by imap1.dmz-prg2.suse.org with ESMTPSA id CJz4ISaZeGVaPQAAD6G6ig (envelope-from ) for ; Tue, 12 Dec 2023 17:32:22 +0000 From: Tom de Vries To: gdb-patches@sourceware.org Subject: [PATCH v2 08/13] [gdb/symtab] Keep track of processed DIEs in shard Date: Tue, 12 Dec 2023 18:32:34 +0100 Message-Id: <20231212173239.16793-9-tdevries@suse.de> X-Mailer: git-send-email 2.35.3 In-Reply-To: <20231212173239.16793-1-tdevries@suse.de> References: <20231212173239.16793-1-tdevries@suse.de> MIME-Version: 1.0 X-Spam-Level: *** X-Spam-Score: 3.99 X-Spam-Level: Authentication-Results: smtp-out2.suse.de; dkim=pass header.d=suse.de header.s=susede2_rsa header.b=NvKwnToH; dkim=pass header.d=suse.de header.s=susede2_ed25519 header.b=pYklfZQ0; dmarc=pass (policy=none) header.from=suse.de; spf=softfail (smtp-out2.suse.de: 2a07:de40:b281:104:10:150:64:97 is neither permitted nor denied by domain of tdevries@suse.de) smtp.mailfrom=tdevries@suse.de X-Rspamd-Server: rspamd2 X-Spamd-Result: default: False [-7.51 / 50.00]; RCVD_VIA_SMTP_AUTH(0.00)[]; SPAMHAUS_XBL(0.00)[2a07:de40:b281:104:10:150:64:97:from]; R_MISSING_CHARSET(2.50)[]; TO_DN_NONE(0.00)[]; BROKEN_CONTENT_TYPE(1.50)[]; R_SPF_SOFTFAIL(0.00)[~all:c]; RCVD_COUNT_THREE(0.00)[3]; DKIM_TRACE(0.00)[suse.de:+]; DMARC_POLICY_ALLOW(0.00)[suse.de,none]; MX_GOOD(-0.01)[]; DMARC_POLICY_ALLOW_WITH_FAILURES(-0.50)[]; NEURAL_HAM_SHORT(-0.20)[-1.000]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+]; ARC_NA(0.00)[]; R_DKIM_ALLOW(-0.20)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; FROM_HAS_DN(0.00)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; NEURAL_HAM_LONG(-1.00)[-1.000]; MIME_GOOD(-0.10)[text/plain]; PREVIOUSLY_DELIVERED(0.00)[gdb-patches@sourceware.org]; DWL_DNSWL_HI(-3.50)[suse.de:dkim]; RCPT_COUNT_ONE(0.00)[1]; DKIM_SIGNED(0.00)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; WHITELIST_DMARC(-7.00)[suse.de:D:+]; MID_CONTAINS_FROM(1.00)[]; DBL_BLOCKED_OPENRESOLVER(0.00)[suse.de:dkim]; FUZZY_BLOCKED(0.00)[rspamd.com]; RCVD_TLS_ALL(0.00)[] X-Spam-Score: -7.51 X-Rspamd-Queue-Id: A50131FD00 X-Spam-Flag: NO X-Spam-Status: No, score=-12.4 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, 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 For optimizations in two following patches, we keep track in each shard which DIEs have been processed. Tested on x86_64-linux. --- gdb/dwarf2/cooked-index.c | 1 + gdb/dwarf2/cooked-index.h | 15 +++++++++++++++ gdb/dwarf2/read.c | 24 ++++++++++++++++++++++++ 3 files changed, 40 insertions(+) diff --git a/gdb/dwarf2/cooked-index.c b/gdb/dwarf2/cooked-index.c index ba37d4a820c..1368636d4b3 100644 --- a/gdb/dwarf2/cooked-index.c +++ b/gdb/dwarf2/cooked-index.c @@ -722,6 +722,7 @@ cooked_index::handle_deferred_entries () { shard->m_die_range_map.reset (nullptr); shard->m_deferred_entries.reset (nullptr); + shard->m_die_range_map_valid.reset (nullptr); } } diff --git a/gdb/dwarf2/cooked-index.h b/gdb/dwarf2/cooked-index.h index de54a788c42..9b233e0f344 100644 --- a/gdb/dwarf2/cooked-index.h +++ b/gdb/dwarf2/cooked-index.h @@ -316,6 +316,7 @@ class cooked_index_shard { m_die_range_map.reset (new parent_map); m_deferred_entries.reset (new std::vector); + m_die_range_map_valid.reset (new addrmap_mutable); } DISABLE_COPY_AND_ASSIGN (cooked_index_shard); @@ -407,6 +408,18 @@ class cooked_index_shard const cooked_index_entry *resolve_deferred_entry (const deferred_entry &entry, const cooked_index_entry *parent_entry); + /* Mark parents in range [START, END] as valid . */ + void set_parent_valid (CORE_ADDR start, CORE_ADDR end) + { + m_die_range_map_valid->set_empty (start, end, (void *) 1); + } + + /* Return true if find_parents can be relied upon. */ + bool parent_valid (CORE_ADDR addr) + { + return m_die_range_map_valid->find (addr) != nullptr; + } + private: /* Return the entry that is believed to represent the program's @@ -470,6 +483,8 @@ class cooked_index_shard understand this. */ std::unique_ptr m_die_range_map; + std::unique_ptr m_die_range_map_valid; + /* The generated DWARF can sometimes have the declaration for a method in a class (or perhaps namespace) scope, with the definition appearing outside this scope... just one of the many diff --git a/gdb/dwarf2/read.c b/gdb/dwarf2/read.c index ec58125499c..e8d5f0a1a9c 100644 --- a/gdb/dwarf2/read.c +++ b/gdb/dwarf2/read.c @@ -4516,6 +4516,12 @@ class cooked_index_storage m_index->defer_entry (de); } + /* Mark parents in range [START, END] as valid . */ + void set_parent_valid (CORE_ADDR start, CORE_ADDR end) + { + m_index->set_parent_valid (start, end); + } + private: /* Hash function for a cutu_reader. */ @@ -4659,6 +4665,11 @@ class cooked_indexer { m_index_storage->defer_entry (de); } + + void set_parent_valid (CORE_ADDR start, CORE_ADDR end) + { + m_index_storage->set_parent_valid (start, end); + } }; /* Subroutine of dwarf2_build_psymtabs_hard to simplify it. @@ -16364,6 +16375,11 @@ cooked_indexer::index_dies (cutu_reader *reader, + to_underlying (reader->cu->header.sect_off) + reader->cu->header.get_length_with_initial ()); + const CORE_ADDR start_cu + = parent_map::form_addr (sect_offset (info_ptr - reader->buffer), + reader->cu->per_cu->is_dwz, + reader->cu->per_cu->is_debug_types); + while (info_ptr < end_ptr) { sect_offset this_die = (sect_offset) (info_ptr - reader->buffer); @@ -16514,6 +16530,14 @@ cooked_indexer::index_dies (cutu_reader *reader, } } + { + CORE_ADDR end_prev_die + = parent_map::form_addr (sect_offset (info_ptr - reader->buffer - 1), + reader->cu->per_cu->is_dwz, + reader->cu->per_cu->is_debug_types); + set_parent_valid (start_cu, end_prev_die); + } + return info_ptr; } From patchwork Tue Dec 12 17:32:35 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom de Vries X-Patchwork-Id: 81982 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 968833857C60 for ; Tue, 12 Dec 2023 17:33:01 +0000 (GMT) X-Original-To: gdb-patches@sourceware.org Delivered-To: gdb-patches@sourceware.org Received: from smtp-out2.suse.de (smtp-out2.suse.de [IPv6:2a07:de40:b251:101:10:150:64:2]) by sourceware.org (Postfix) with ESMTPS id 22A553858294 for ; Tue, 12 Dec 2023 17:32:24 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 22A553858294 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=suse.de Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=suse.de ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 22A553858294 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a07:de40:b251:101:10:150:64:2 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1702402346; cv=none; b=XJacTOeZxzfoM1UfvR+0LsiPd3kCzRva15bFYzvXQ+4wwEkQXpDKDus8v6gg3mNJojq6TcVD2MTfcCUW7bF+F7hZnBX/SFLCn2+VCjKxWuFrOAl7PPiqCcHesvwvVMgroVVQt05BvuIwUpk/aDnH41mUDPZm1c+HN1uSURVIyt0= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1702402346; c=relaxed/simple; bh=ACf6UQXV2F+XKSbHYLFdFgSDxcGNaNMdbyr5fPBZb1A=; h=DKIM-Signature:DKIM-Signature:DKIM-Signature:DKIM-Signature:From: To:Subject:Date:Message-Id:MIME-Version; b=BnhgMxXD0HpoFuGLmV4B8G7A9Yv1jSp/zdp+IZJTLfGPy0vGFGxy89ugRZ6x3xlFvZMRdHrpVH1UZhR08cZs9b93LZgQRUFYDwILCuLP652+n2y3R7u+5/7q6xOdl0BFwkPk3WL8q+/3+a7CSvQJb4AQlHjFFCN1YhQ47DSZw+Q= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org [10.150.64.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id BEB181FD03 for ; Tue, 12 Dec 2023 17:32:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1702402342; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=U+y0txQ5nX7/OEkJ6O9VjnXtaQvEQ2hk++Eefvp5liM=; b=yB4owdIVHzYg+QyZ9d8Rn96bdJ7lH9Vq6NehRKDUO+sB0+oZ5SOyETiY5H1xTexW6mCFx6 oOCn29aRYtRbSUq/0nTmoNqhFREPoHdCL6zx8Kr9keqf1K3IEoFyRsfnm/rqGikGXQV8y+ CRykUJk9g1zmYHrZX2+33x3om9EgJ4k= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1702402342; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=U+y0txQ5nX7/OEkJ6O9VjnXtaQvEQ2hk++Eefvp5liM=; b=JnS/BSHyxY22Drd6V8QqWTM/+YZCO+KbD3L5PWMSZBPb1ZyCfeuafkTHEfOOqpAK6UJO3C ic6dsDSrI9l6UPDA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1702402342; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=U+y0txQ5nX7/OEkJ6O9VjnXtaQvEQ2hk++Eefvp5liM=; b=yB4owdIVHzYg+QyZ9d8Rn96bdJ7lH9Vq6NehRKDUO+sB0+oZ5SOyETiY5H1xTexW6mCFx6 oOCn29aRYtRbSUq/0nTmoNqhFREPoHdCL6zx8Kr9keqf1K3IEoFyRsfnm/rqGikGXQV8y+ CRykUJk9g1zmYHrZX2+33x3om9EgJ4k= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1702402342; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=U+y0txQ5nX7/OEkJ6O9VjnXtaQvEQ2hk++Eefvp5liM=; b=JnS/BSHyxY22Drd6V8QqWTM/+YZCO+KbD3L5PWMSZBPb1ZyCfeuafkTHEfOOqpAK6UJO3C ic6dsDSrI9l6UPDA== Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id AA6E613A9D for ; Tue, 12 Dec 2023 17:32:22 +0000 (UTC) Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167]) by imap1.dmz-prg2.suse.org with ESMTPSA id 2FVeKCaZeGVaPQAAD6G6ig (envelope-from ) for ; Tue, 12 Dec 2023 17:32:22 +0000 From: Tom de Vries To: gdb-patches@sourceware.org Subject: [PATCH v2 09/13] [gdb/symtab] Resolve deferred entries, intra-shard case Date: Tue, 12 Dec 2023 18:32:35 +0100 Message-Id: <20231212173239.16793-10-tdevries@suse.de> X-Mailer: git-send-email 2.35.3 In-Reply-To: <20231212173239.16793-1-tdevries@suse.de> References: <20231212173239.16793-1-tdevries@suse.de> MIME-Version: 1.0 X-Spam-Level: *** X-Spam-Score: 3.70 X-Spam-Level: X-Spam-Flag: NO Authentication-Results: smtp-out2.suse.de; none X-Spamd-Result: default: False [0.90 / 50.00]; ARC_NA(0.00)[]; RCVD_VIA_SMTP_AUTH(0.00)[]; FROM_HAS_DN(0.00)[]; R_MISSING_CHARSET(2.50)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; MIME_GOOD(-0.10)[text/plain]; PREVIOUSLY_DELIVERED(0.00)[gdb-patches@sourceware.org]; BROKEN_CONTENT_TYPE(1.50)[]; RCPT_COUNT_ONE(0.00)[1]; NEURAL_HAM_LONG(-1.00)[-1.000]; RCVD_COUNT_THREE(0.00)[3]; TO_DN_NONE(0.00)[]; DKIM_SIGNED(0.00)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; MID_CONTAINS_FROM(1.00)[]; FUZZY_BLOCKED(0.00)[rspamd.com]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+]; RCVD_TLS_ALL(0.00)[]; BAYES_HAM(-3.00)[100.00%] X-Spam-Score: 0.90 X-Spam-Status: No, score=-12.4 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, 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 In patch "[gdb/symtab] Resolve deferred entries, inter-shard case" we've solved the generic case of handling deferred entries. Now add an optimization that handles deferred entries with an intra-shard dependency in the parallel for. Tested on x86_64-linux. --- gdb/dwarf2/cooked-index.c | 35 +++++++++++++++++++++++++++++++++++ gdb/dwarf2/cooked-index.h | 7 +++++++ gdb/dwarf2/read.c | 10 ++++++++++ 3 files changed, 52 insertions(+) diff --git a/gdb/dwarf2/cooked-index.c b/gdb/dwarf2/cooked-index.c index 1368636d4b3..04c69de78d9 100644 --- a/gdb/dwarf2/cooked-index.c +++ b/gdb/dwarf2/cooked-index.c @@ -456,6 +456,7 @@ cooked_index_shard::wait (bool allow_quit) const cooked_index::cooked_index (vec_type &&vec) : m_vector (std::move (vec)) { + /* Handle deferred entries, inter-cu case. */ handle_deferred_entries (); for (auto &idx : m_vector) @@ -658,6 +659,40 @@ cooked_index::maybe_write_index (dwarf2_per_bfd *per_bfd, /* See cooked-index.h. */ +const cooked_index_entry * +cooked_index_shard::find_parent_deferred_entry + (const cooked_index_shard::deferred_entry &entry) const +{ + return find_parent (entry.spec_offset); +} + +/* See cooked-index.h. */ + +void +cooked_index_shard::handle_deferred_entries () +{ + for (auto it = m_deferred_entries->begin (); it != m_deferred_entries->end (); ) + { + const deferred_entry & deferred_entry = *it; + if (!parent_valid (deferred_entry.spec_offset)) + { + it++; + continue; + } + const cooked_index_entry *parent_entry + = find_parent_deferred_entry (deferred_entry); + if (parent_entry == &parent_map::deferred) + { + it++; + continue; + } + resolve_deferred_entry (deferred_entry, parent_entry); + it = m_deferred_entries->erase (it); + } +} + +/* See cooked-index.h. */ + const cooked_index_entry * cooked_index_shard::resolve_deferred_entry (const deferred_entry &de, const cooked_index_entry *parent_entry) diff --git a/gdb/dwarf2/cooked-index.h b/gdb/dwarf2/cooked-index.h index 9b233e0f344..a2b6492d924 100644 --- a/gdb/dwarf2/cooked-index.h +++ b/gdb/dwarf2/cooked-index.h @@ -408,6 +408,13 @@ class cooked_index_shard const cooked_index_entry *resolve_deferred_entry (const deferred_entry &entry, const cooked_index_entry *parent_entry); + /* Find the parent entry for deferred_entry ENTRY. */ + const cooked_index_entry *find_parent_deferred_entry + (const cooked_index_shard::deferred_entry &entry) const; + + /* Create cooked_index_entries for the deferred entries. */ + void handle_deferred_entries (); + /* Mark parents in range [START, END] as valid . */ void set_parent_valid (CORE_ADDR start, CORE_ADDR end) { diff --git a/gdb/dwarf2/read.c b/gdb/dwarf2/read.c index e8d5f0a1a9c..3d52e908152 100644 --- a/gdb/dwarf2/read.c +++ b/gdb/dwarf2/read.c @@ -4516,6 +4516,12 @@ class cooked_index_storage m_index->defer_entry (de); } + /* Handle deferred entries, intra-cu case. */ + void handle_deferred_entries () + { + m_index->handle_deferred_entries (); + } + /* Mark parents in range [START, END] as valid . */ void set_parent_valid (CORE_ADDR start, CORE_ADDR end) { @@ -5002,6 +5008,10 @@ dwarf2_build_psymtabs_hard (dwarf2_per_objfile *per_objfile) errors.push_back (std::move (except)); } } + + /* Handle deferred entries, intra-cu case. */ + thread_storage.handle_deferred_entries (); + return result_type (thread_storage.release (), std::move (errors)); }, task_size); From patchwork Tue Dec 12 17:32:36 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom de Vries X-Patchwork-Id: 81984 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 1165E3861871 for ; Tue, 12 Dec 2023 17:33:17 +0000 (GMT) X-Original-To: gdb-patches@sourceware.org Delivered-To: gdb-patches@sourceware.org Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.223.131]) by sourceware.org (Postfix) with ESMTPS id 56EC63858298 for ; Tue, 12 Dec 2023 17:32:24 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 56EC63858298 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=suse.de Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=suse.de ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 56EC63858298 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=195.135.223.131 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1702402345; cv=none; b=vgVTQ1FFAN9/fEyKUNWYZUYTJGCFu6bMWyUfrwHQWwJboTt+oYG4kgDKNdYh9THaTVZBMjmChRZt17y/1hsTLymsT3vbXpRKFoUPOb4jnJazHtu3xveV4juGGMGWnB1lBfIyAnftJd8QKEOPOX88JHSRota+bECvvdeJitiemag= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1702402345; c=relaxed/simple; bh=YbmlPEjaI6AWXAh8yihYfsWJS4Ame3WkA9OYYLm8eTA=; h=DKIM-Signature:DKIM-Signature:DKIM-Signature:DKIM-Signature:From: To:Subject:Date:Message-Id:MIME-Version; b=eODfjb8Uq6pOc2y8i5NvIctIaaJpRBOUotlQklA1zJx6w7O8unJ+DkUGZSb0MRHPap6lVIeYaVbV5ApwWAdmJlxAtWAFH9Hp8eEDJQcJWVfEwTfJAz/7sadtFlCy2OeSCbT1Iry/yRHYbAQuT0kP1aZvqzCNCpNY47+/FOIsZWE= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org [IPv6:2a07:de40:b281:104:10:150:64:97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id DD6731FB84 for ; Tue, 12 Dec 2023 17:32:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1702402343; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=QHPVxKBjTqi+vjSDBjSs47QyQU/WkQwprjZaPL82ogw=; b=rVLMtcISUWhAFXyIrsUIM0zafpIL3JQFzU6FCr2tnzs5JfOHLs/dwQRi+8mRDWveIQDWo8 RX8JvreM5HBte49+CuwfwKPjleWaIk9sIMO9vLJXg6aqk1jK1pE61EAtekQgL64PFz3SuX rwnFU0Gb5A5WnqLCOb0haWHXGMVzBXo= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1702402343; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=QHPVxKBjTqi+vjSDBjSs47QyQU/WkQwprjZaPL82ogw=; b=GzHHVxHXlWk79ZC7NlZLae2S6FDt4Mm0v6pKYh5l13WZCmjEiClxmEY5ZLv1/z/uKe9DXg q/DuEK+SwXtlfVDg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1702402342; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=QHPVxKBjTqi+vjSDBjSs47QyQU/WkQwprjZaPL82ogw=; b=VwhaBR9D7ejA0an4R50cfo54hhCnuGECFIxn0qaPBEThLRr/0rxsNSm3DdTbLnkKisIBNt AEmAjlDRtDsO5UPXnpKZ7U6biX1hNmA1vPeBVUb7o1zKOiaMex+afOTDlh1NxjSB0qWQXF B1xe9B+DD3Wm9zlFdYz2WXkjWlyp/CM= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1702402342; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=QHPVxKBjTqi+vjSDBjSs47QyQU/WkQwprjZaPL82ogw=; b=4XybMRdqWU6+wOwWtwge9qsS151MnKRoJwGM1l1+4uJo50HS0tgZXhE4L/iDptKXa3RCHf Eh7kRpEITttWhiAA== Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id C3B7F13AAE for ; Tue, 12 Dec 2023 17:32:22 +0000 (UTC) Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167]) by imap1.dmz-prg2.suse.org with ESMTPSA id 4E+cLiaZeGVaPQAAD6G6ig (envelope-from ) for ; Tue, 12 Dec 2023 17:32:22 +0000 From: Tom de Vries To: gdb-patches@sourceware.org Subject: [PATCH v2 10/13] [gdb/symtab] Don't defer backward refs, inter-cu intra-shard case Date: Tue, 12 Dec 2023 18:32:36 +0100 Message-Id: <20231212173239.16793-11-tdevries@suse.de> X-Mailer: git-send-email 2.35.3 In-Reply-To: <20231212173239.16793-1-tdevries@suse.de> References: <20231212173239.16793-1-tdevries@suse.de> MIME-Version: 1.0 X-Spam-Level: *** X-Spam-Score: 3.79 X-Spam-Level: Authentication-Results: smtp-out2.suse.de; dkim=pass header.d=suse.de header.s=susede2_rsa header.b=VwhaBR9D; dkim=pass header.d=suse.de header.s=susede2_ed25519 header.b=4XybMRdq; dmarc=pass (policy=none) header.from=suse.de; spf=softfail (smtp-out2.suse.de: 2a07:de40:b281:104:10:150:64:97 is neither permitted nor denied by domain of tdevries@suse.de) smtp.mailfrom=tdevries@suse.de X-Rspamd-Server: rspamd2 X-Spamd-Result: default: False [-10.15 / 50.00]; RCVD_VIA_SMTP_AUTH(0.00)[]; SPAMHAUS_XBL(0.00)[2a07:de40:b281:104:10:150:64:97:from]; R_MISSING_CHARSET(2.50)[]; TO_DN_NONE(0.00)[]; BROKEN_CONTENT_TYPE(1.50)[]; R_SPF_SOFTFAIL(0.00)[~all:c]; RCVD_COUNT_THREE(0.00)[3]; DKIM_TRACE(0.00)[suse.de:+]; DMARC_POLICY_ALLOW(0.00)[suse.de,none]; MX_GOOD(-0.01)[]; DMARC_POLICY_ALLOW_WITH_FAILURES(-0.50)[]; NEURAL_HAM_SHORT(-0.20)[-1.000]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+]; BAYES_HAM(-2.64)[98.41%]; ARC_NA(0.00)[]; R_DKIM_ALLOW(-0.20)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; FROM_HAS_DN(0.00)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; NEURAL_HAM_LONG(-1.00)[-1.000]; MIME_GOOD(-0.10)[text/plain]; PREVIOUSLY_DELIVERED(0.00)[gdb-patches@sourceware.org]; DWL_DNSWL_HI(-3.50)[suse.de:dkim]; RCPT_COUNT_ONE(0.00)[1]; DKIM_SIGNED(0.00)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; WHITELIST_DMARC(-7.00)[suse.de:D:+]; MID_CONTAINS_FROM(1.00)[]; DBL_BLOCKED_OPENRESOLVER(0.00)[suse.de:dkim]; FUZZY_BLOCKED(0.00)[rspamd.com]; RCVD_TLS_ALL(0.00)[] X-Spam-Score: -10.15 X-Rspamd-Queue-Id: DD6731FB84 X-Spam-Flag: NO X-Spam-Status: No, score=-12.4 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, 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 In patch "[gdb/symtab] Resolve deferred entries, inter-shard case" we've solved the generic case of handling deferred entries. Add an optimization that doesn't defer inter-CU intra-shard dependencies that are present in the shard's parent map. Tested on x86_64-linux. --- gdb/dwarf2/read.c | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/gdb/dwarf2/read.c b/gdb/dwarf2/read.c index 3d52e908152..610c751818e 100644 --- a/gdb/dwarf2/read.c +++ b/gdb/dwarf2/read.c @@ -4528,6 +4528,12 @@ class cooked_index_storage m_index->set_parent_valid (start, end); } + /* Return true if find_parents can be relied upon. */ + bool parent_valid (CORE_ADDR addr) + { + return m_index->parent_valid (addr); + } + private: /* Hash function for a cutu_reader. */ @@ -4676,6 +4682,12 @@ class cooked_indexer { m_index_storage->set_parent_valid (start, end); } + + /* Return true if find_parents can be relied upon. */ + bool parent_valid (CORE_ADDR addr) + { + return m_index_storage->parent_valid (addr); + } }; /* Subroutine of dwarf2_build_psymtabs_hard to simplify it. @@ -16242,7 +16254,22 @@ cooked_indexer::scan_attributes (dwarf2_per_cu_data *scanning_per_cu, else { /* Inter-CU case. */ - *maybe_defer = addr; + if (parent_valid (addr)) + { + auto tmp = find_parent (addr); + if (tmp == &parent_map::deferred) + { + /* Defer because origin is deferred. */ + *maybe_defer = addr; + } + else + *parent_entry = tmp; + } + else + { + /* Defer because origin is in other shard. */ + *maybe_defer = addr; + } } } From patchwork Tue Dec 12 17:32:37 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom de Vries X-Patchwork-Id: 81989 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 01DC4385DC28 for ; Tue, 12 Dec 2023 17:33:53 +0000 (GMT) X-Original-To: gdb-patches@sourceware.org Delivered-To: gdb-patches@sourceware.org Received: from smtp-out2.suse.de (smtp-out2.suse.de [IPv6:2a07:de40:b251:101:10:150:64:2]) by sourceware.org (Postfix) with ESMTPS id 161083857C6B for ; Tue, 12 Dec 2023 17:32:26 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 161083857C6B Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=suse.de Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=suse.de ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 161083857C6B Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a07:de40:b251:101:10:150:64:2 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1702402347; cv=none; b=I0VYYnXWshpsisP1f2uYstT827T627YBR4E7f+cmD0aHKhTEXd47kyKYSyXLabXa+pGajyeJKm0Q2e4lxGVryVerWp4DM1umqK96pUuMOVo6i6LeDgke2z7TyvsMfhAHa7Wm+QA9ydyVla+dKP1JnGkIPKbkG4BD1tlitwk2T+M= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1702402347; c=relaxed/simple; bh=aHf4fwaMwCEfR+SSmKSPdfi3P2gvhdK6N8NRgJLHR7M=; h=DKIM-Signature:DKIM-Signature:DKIM-Signature:DKIM-Signature:From: To:Subject:Date:Message-Id:MIME-Version; b=TcGc+jYmsqADdvfISsvy5CFogNbKW3cjUlA1Q0dh0E1C3DyAY+8g5Z5KYCkigR2IlvbDjX2bJfQJAX5GmQM18loyNj8RqLzC7c0nUs3qK7CwrqRw7wTzQYeqvKWlGVXcAny66du3tU0+AymDUmXlafsSyjwOZfgEHiJH/MN4jLc= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org [10.150.64.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id 131301FD10 for ; Tue, 12 Dec 2023 17:32:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1702402343; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=eeh6ScrEDg6XINHr4tP4Lc5jd+c0AEHDZIEo39JCQpI=; b=HqRMk1nQOYiNqoOag1fbdI0v/98Dq3TRlNBfLiOrWFjPSgUrc4af1Rli2/1BDHes4sDOw+ 5bo+T/6l3pRNoPl4Av5w32+dQ+0/E0Y5miwHuMpWUfFl6DhQiL9fu5GZrWLDdcdk6LmaLV jzzeoVVFC3I99zQYAVaPfhipCPH2X1M= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1702402343; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=eeh6ScrEDg6XINHr4tP4Lc5jd+c0AEHDZIEo39JCQpI=; b=MpAK0eBWUVpTjnLI1LYIW0hyIOu0v+yoWviaSh6MZ2hLKBl6CYW4a7X/QAUj2vhdBDHfIy q/gO3AcDn4Q/CLDQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1702402343; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=eeh6ScrEDg6XINHr4tP4Lc5jd+c0AEHDZIEo39JCQpI=; b=HqRMk1nQOYiNqoOag1fbdI0v/98Dq3TRlNBfLiOrWFjPSgUrc4af1Rli2/1BDHes4sDOw+ 5bo+T/6l3pRNoPl4Av5w32+dQ+0/E0Y5miwHuMpWUfFl6DhQiL9fu5GZrWLDdcdk6LmaLV jzzeoVVFC3I99zQYAVaPfhipCPH2X1M= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1702402343; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=eeh6ScrEDg6XINHr4tP4Lc5jd+c0AEHDZIEo39JCQpI=; b=MpAK0eBWUVpTjnLI1LYIW0hyIOu0v+yoWviaSh6MZ2hLKBl6CYW4a7X/QAUj2vhdBDHfIy q/gO3AcDn4Q/CLDQ== Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id DCFD613AB3 for ; Tue, 12 Dec 2023 17:32:22 +0000 (UTC) Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167]) by imap1.dmz-prg2.suse.org with ESMTPSA id GNLCNCaZeGVaPQAAD6G6ig (envelope-from ) for ; Tue, 12 Dec 2023 17:32:22 +0000 From: Tom de Vries To: gdb-patches@sourceware.org Subject: [PATCH v2 11/13] [gdb/symtab] Recurse into c++ DW_TAG_subprogram DIEs for cooked index Date: Tue, 12 Dec 2023 18:32:37 +0100 Message-Id: <20231212173239.16793-12-tdevries@suse.de> X-Mailer: git-send-email 2.35.3 In-Reply-To: <20231212173239.16793-1-tdevries@suse.de> References: <20231212173239.16793-1-tdevries@suse.de> MIME-Version: 1.0 X-Spam-Score: 1.88 Authentication-Results: smtp-out2.suse.de; none X-Spam-Score: 1.14 X-Spamd-Result: default: False [1.14 / 50.00]; ARC_NA(0.00)[]; RCVD_VIA_SMTP_AUTH(0.00)[]; FROM_HAS_DN(0.00)[]; R_MISSING_CHARSET(2.50)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; MIME_GOOD(-0.10)[text/plain]; PREVIOUSLY_DELIVERED(0.00)[gdb-patches@sourceware.org]; BROKEN_CONTENT_TYPE(1.50)[]; RCPT_COUNT_ONE(0.00)[1]; NEURAL_HAM_LONG(-1.00)[-1.000]; RCVD_COUNT_THREE(0.00)[3]; TO_DN_NONE(0.00)[]; DKIM_SIGNED(0.00)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; NEURAL_HAM_SHORT(-0.20)[-1.000]; MID_CONTAINS_FROM(1.00)[]; FUZZY_BLOCKED(0.00)[rspamd.com]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+]; RCVD_TLS_ALL(0.00)[]; BAYES_HAM(-2.56)[98.04%] X-Spam-Flag: NO X-Spam-Status: No, score=-12.4 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, 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 Recurse into c++ DW_TAG_subprogram DIEs for cooked index, to add DW_TAG_inlined_subroutine entries. Tested on x86_64-linux. --- gdb/dwarf2/read.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/gdb/dwarf2/read.c b/gdb/dwarf2/read.c index 610c751818e..e999a6a5c59 100644 --- a/gdb/dwarf2/read.c +++ b/gdb/dwarf2/read.c @@ -16541,7 +16541,8 @@ cooked_indexer::index_dies (cutu_reader *reader, case DW_TAG_subprogram: if ((m_language == language_fortran - || m_language == language_ada) + || m_language == language_ada + || m_language == language_cplus) && this_entry != nullptr) { info_ptr = recurse (reader, info_ptr, this_entry, true); From patchwork Tue Dec 12 17:32:38 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom de Vries X-Patchwork-Id: 81990 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 52146385B531 for ; Tue, 12 Dec 2023 17:34:03 +0000 (GMT) X-Original-To: gdb-patches@sourceware.org Delivered-To: gdb-patches@sourceware.org Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.223.131]) by sourceware.org (Postfix) with ESMTPS id 4B43C3857830 for ; Tue, 12 Dec 2023 17:32:26 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 4B43C3857830 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=suse.de Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=suse.de ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 4B43C3857830 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=195.135.223.131 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1702402348; cv=none; b=N9CF4KhJ2AYe4LUFZ8guNZIP1qJEqZlxINyWGjIMeH+RxGBxSpk2vUwNwOEi4gz2McLLnytjbD+/G1fe2y9CSJU9aMR17o8deXx6iFCjRxktdu/w+5n9xzdtXkvzHjK425PhsqmAabcazd2tj6Jnv8A5WHuzXLUbzCxEQtSmeaY= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1702402348; c=relaxed/simple; bh=0vTdPctoQPwD9wC3842A7n0pN0gz13iAjx+Vs435OBM=; h=DKIM-Signature:DKIM-Signature:DKIM-Signature:DKIM-Signature:From: To:Subject:Date:Message-Id:MIME-Version; b=LNPrPc8B5/GuNwQrFKjRXy9fwY2/ZpsQN/1OBHbNJCzBW1l9AXr5kukzYUjKqo+zq+u/x73A9E4mkoRVLpoXFysAt8w8wiu4xW0SSycUGpe9n/mTthy02mBxTtkyKtMBQaRwptf/boHbSeagGQ1NOeJT9geIRC2DsO7e028HniM= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org [10.150.64.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id 4DAEA1FB9E for ; Tue, 12 Dec 2023 17:32:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1702402343; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=brXrc0y9s/Hub/UZmqEh9dVYGA4Z5/BtGwdnmTlE004=; b=1DedVFPedfZjClz/41a8w8MsyQ1HdnxBCkpS89hIUiuXcwkfQXi7eWjglcRxN/U9+JkLCW Ml31uMg2X3JBr/o4JLw82Sb61m2fTK+tKdmd1WC864o0LFoF1OPG3/U6FUo8UmXNHa212U ro2I+6xtxHhHHmjK+iXsEKKc1C0bRQU= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1702402343; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=brXrc0y9s/Hub/UZmqEh9dVYGA4Z5/BtGwdnmTlE004=; b=1rhyR+iAxP02yvRxymuc+VwlDLo92se5KCQ5i38P0Iy/GieLtm9qwk++jwO/krtUG+9rqF orcS0NGjS3Ewn8DQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1702402343; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=brXrc0y9s/Hub/UZmqEh9dVYGA4Z5/BtGwdnmTlE004=; b=1DedVFPedfZjClz/41a8w8MsyQ1HdnxBCkpS89hIUiuXcwkfQXi7eWjglcRxN/U9+JkLCW Ml31uMg2X3JBr/o4JLw82Sb61m2fTK+tKdmd1WC864o0LFoF1OPG3/U6FUo8UmXNHa212U ro2I+6xtxHhHHmjK+iXsEKKc1C0bRQU= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1702402343; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=brXrc0y9s/Hub/UZmqEh9dVYGA4Z5/BtGwdnmTlE004=; b=1rhyR+iAxP02yvRxymuc+VwlDLo92se5KCQ5i38P0Iy/GieLtm9qwk++jwO/krtUG+9rqF orcS0NGjS3Ewn8DQ== Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 0C90C13A9B for ; Tue, 12 Dec 2023 17:32:23 +0000 (UTC) Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167]) by imap1.dmz-prg2.suse.org with ESMTPSA id 4LLeASeZeGVaPQAAD6G6ig (envelope-from ) for ; Tue, 12 Dec 2023 17:32:23 +0000 From: Tom de Vries To: gdb-patches@sourceware.org Subject: [PATCH v2 12/13] [gdb/symtab] Keep track of all parents for cooked index Date: Tue, 12 Dec 2023 18:32:38 +0100 Message-Id: <20231212173239.16793-13-tdevries@suse.de> X-Mailer: git-send-email 2.35.3 In-Reply-To: <20231212173239.16793-1-tdevries@suse.de> References: <20231212173239.16793-1-tdevries@suse.de> MIME-Version: 1.0 X-Spam-Level: * X-Spam-Score: 1.45 Authentication-Results: smtp-out2.suse.de; none X-Spam-Level: X-Spam-Score: 0.90 X-Spamd-Result: default: False [0.90 / 50.00]; ARC_NA(0.00)[]; RCVD_VIA_SMTP_AUTH(0.00)[]; FROM_HAS_DN(0.00)[]; R_MISSING_CHARSET(2.50)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; MIME_GOOD(-0.10)[text/plain]; PREVIOUSLY_DELIVERED(0.00)[gdb-patches@sourceware.org]; BROKEN_CONTENT_TYPE(1.50)[]; RCPT_COUNT_ONE(0.00)[1]; NEURAL_HAM_LONG(-1.00)[-1.000]; RCVD_COUNT_THREE(0.00)[3]; TO_DN_NONE(0.00)[]; DKIM_SIGNED(0.00)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; NEURAL_HAM_SHORT(-0.20)[-1.000]; MID_CONTAINS_FROM(1.00)[]; FUZZY_BLOCKED(0.00)[rspamd.com]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+]; RCVD_TLS_ALL(0.00)[]; BAYES_HAM(-2.80)[99.12%] X-Spam-Flag: NO X-Spam-Status: No, score=-12.4 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, 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 Keep track of all parents for cooked index. Tested on x86_64-linux. --- gdb/dwarf2/read.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/gdb/dwarf2/read.c b/gdb/dwarf2/read.c index e999a6a5c59..652bcda3704 100644 --- a/gdb/dwarf2/read.c +++ b/gdb/dwarf2/read.c @@ -16478,9 +16478,15 @@ cooked_indexer::index_dies (cutu_reader *reader, }); } else - this_entry = m_index_storage->add (this_die, abbrev->tag, flags, - name, this_parent_entry, - m_per_cu); + { + CORE_ADDR addr + = parent_map::form_addr (this_die, reader->cu->per_cu->is_dwz, + reader->cu->per_cu->is_debug_types); + set_parent (addr, addr, this_parent_entry); + this_entry = m_index_storage->add (this_die, abbrev->tag, flags, + name, this_parent_entry, + m_per_cu); + } } if (linkage_name != nullptr) From patchwork Tue Dec 12 17:32:39 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom de Vries X-Patchwork-Id: 81987 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 99F6D385AC22 for ; Tue, 12 Dec 2023 17:33:36 +0000 (GMT) X-Original-To: gdb-patches@sourceware.org Delivered-To: gdb-patches@sourceware.org Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.223.130]) by sourceware.org (Postfix) with ESMTPS id 882C83858000 for ; Tue, 12 Dec 2023 17:32:24 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 882C83858000 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=suse.de Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=suse.de ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 882C83858000 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=195.135.223.130 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1702402346; cv=none; b=w6AJjskYR2AstEExxZgiZj53706ghZOCO4uCWKMFU4xDRsUYlM6aWIeb0Y3nsE/IMFxZH4sHy3YGD5BCfxVZH+afKgA7lAScG79Nqd0zTer1JwwIasCQSOpTiY47/zJ1D3TSEmK7jaRAF7cg7+hBkReV1vW3GlgsyiE/eOQ539k= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1702402346; c=relaxed/simple; bh=Rxo40YLAJEs4rIH3G22hrJ6iPjR6Z19NJr/PgdPm/G8=; h=DKIM-Signature:DKIM-Signature:DKIM-Signature:DKIM-Signature:From: To:Subject:Date:Message-Id:MIME-Version; b=u69n7NYPILw1Pz17wK7uMXZf+jz9XD+Nvxdb8Vbz1/sXYQzxV6R/2fCDhw6wPIsdSVoj9+HWvYc7OIfIiK/ruycOD2Yh8Z81gFzaamOug8upQAugg0/Qz7h1q8ZqmhrODvIFvjvLD43QqUiN0W+lN8InsuBghq1bWf3EsMk19C4= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org [10.150.64.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id 3CF5021DB1 for ; Tue, 12 Dec 2023 17:32:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1702402343; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=0LWlkfVMzFg4u40qeeFb5nQDWcLYiJatZiDjSk+3Ccw=; b=H4N8CpoglSSrTYgDxFVpninnCPOmJyuxh/A/5GbXK7Dy6ijAKQIAVvSriu6oylmz2BbuZc CNsYMbETzFubb+7C3q/2G6JijYuZOG2p3bqbqbUl9Jel3BWfWARsv6SnEjfq27JxAoHmbH x6pp6UTCZLLq6xC4AARm5zDCrX6W258= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1702402343; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=0LWlkfVMzFg4u40qeeFb5nQDWcLYiJatZiDjSk+3Ccw=; b=L4iU1srszNLoSB8bh0SPG0aieiZ0Ns9AX0HGKG4AdtiyD5tGLLiLHOkVbMp/q5BjaaMopk 2GYwQ6oouNAtrqAg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1702402343; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=0LWlkfVMzFg4u40qeeFb5nQDWcLYiJatZiDjSk+3Ccw=; b=H4N8CpoglSSrTYgDxFVpninnCPOmJyuxh/A/5GbXK7Dy6ijAKQIAVvSriu6oylmz2BbuZc CNsYMbETzFubb+7C3q/2G6JijYuZOG2p3bqbqbUl9Jel3BWfWARsv6SnEjfq27JxAoHmbH x6pp6UTCZLLq6xC4AARm5zDCrX6W258= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1702402343; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=0LWlkfVMzFg4u40qeeFb5nQDWcLYiJatZiDjSk+3Ccw=; b=L4iU1srszNLoSB8bh0SPG0aieiZ0Ns9AX0HGKG4AdtiyD5tGLLiLHOkVbMp/q5BjaaMopk 2GYwQ6oouNAtrqAg== Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 2712B13A9D for ; Tue, 12 Dec 2023 17:32:23 +0000 (UTC) Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167]) by imap1.dmz-prg2.suse.org with ESMTPSA id 4F5FCCeZeGVaPQAAD6G6ig (envelope-from ) for ; Tue, 12 Dec 2023 17:32:23 +0000 From: Tom de Vries To: gdb-patches@sourceware.org Subject: [PATCH v2 13/13] [gdb/symtab] Fix DW_TAG_inlined_subroutine entries in the cooked index Date: Tue, 12 Dec 2023 18:32:39 +0100 Message-Id: <20231212173239.16793-14-tdevries@suse.de> X-Mailer: git-send-email 2.35.3 In-Reply-To: <20231212173239.16793-1-tdevries@suse.de> References: <20231212173239.16793-1-tdevries@suse.de> MIME-Version: 1.0 X-Spam-Level: X-Spam-Score: 0.70 X-Spam-Level: X-Spam-Flag: NO Authentication-Results: smtp-out1.suse.de; none X-Spamd-Result: default: False [0.90 / 50.00]; ARC_NA(0.00)[]; RCVD_VIA_SMTP_AUTH(0.00)[]; FROM_HAS_DN(0.00)[]; R_MISSING_CHARSET(2.50)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; MIME_GOOD(-0.10)[text/plain]; PREVIOUSLY_DELIVERED(0.00)[gdb-patches@sourceware.org]; BROKEN_CONTENT_TYPE(1.50)[]; RCPT_COUNT_ONE(0.00)[1]; NEURAL_HAM_LONG(-1.00)[-1.000]; RCVD_COUNT_THREE(0.00)[3]; TO_DN_NONE(0.00)[]; DKIM_SIGNED(0.00)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; MID_CONTAINS_FROM(1.00)[]; DBL_BLOCKED_OPENRESOLVER(0.00)[sourceware.org:url]; FUZZY_BLOCKED(0.00)[rspamd.com]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+]; RCVD_TLS_ALL(0.00)[]; BAYES_HAM(-3.00)[100.00%] X-Spam-Score: 0.90 X-Spam-Status: No, score=-12.4 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, 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 We get incorrect qualified names in the cooked index for DW_TAG_inlined_subroutine DIEs with abstract origin, due to the fact that the DIE parent is used instead of the abstract origin. Fix this by preferring the abstract origin parent, if available. Tested on x86_64-linux. PR symtab/30728 Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=30728 --- gdb/dwarf2/read.c | 67 ++++++++++++++++++++++------------------------- 1 file changed, 32 insertions(+), 35 deletions(-) diff --git a/gdb/dwarf2/read.c b/gdb/dwarf2/read.c index 652bcda3704..7537cb6b7f2 100644 --- a/gdb/dwarf2/read.c +++ b/gdb/dwarf2/read.c @@ -16224,52 +16224,49 @@ cooked_indexer::scan_attributes (dwarf2_per_cu_data *scanning_per_cu, const gdb_byte *new_info_ptr = (new_reader->buffer + to_underlying (origin_offset)); - if (*parent_entry == nullptr) + gdb_assert (reader->cu->per_cu->is_debug_types + == new_reader->cu->per_cu->is_debug_types); + CORE_ADDR addr + = parent_map::form_addr (origin_offset, origin_is_dwz, + reader->cu->per_cu->is_debug_types); + if (new_reader->cu == reader->cu) { - gdb_assert (reader->cu->per_cu->is_debug_types - == new_reader->cu->per_cu->is_debug_types); - CORE_ADDR addr - = parent_map::form_addr (origin_offset, origin_is_dwz, - reader->cu->per_cu->is_debug_types); - if (new_reader->cu == reader->cu) + /* Intra-CU case. */ + if (new_info_ptr > watermark_ptr) { - /* Intra-CU case. */ - if (new_info_ptr > watermark_ptr) - { - /* Defer because origin is not read yet. */ - *maybe_defer = addr; - } - else - { - auto tmp = find_parent (addr); - if (tmp == &parent_map::deferred) - { - /* Defer because origin is deferred. */ - *maybe_defer = addr; - } - else - *parent_entry = tmp; - } + /* Defer because origin is not read yet. */ + *maybe_defer = addr; } else { - /* Inter-CU case. */ - if (parent_valid (addr)) + auto tmp = find_parent (addr); + if (tmp == &parent_map::deferred) { - auto tmp = find_parent (addr); - if (tmp == &parent_map::deferred) - { - /* Defer because origin is deferred. */ - *maybe_defer = addr; - } - else - *parent_entry = tmp; + /* Defer because origin is deferred. */ + *maybe_defer = addr; } else + *parent_entry = tmp; + } + } + else + { + /* Inter-CU case. */ + if (parent_valid (addr)) + { + auto tmp = find_parent (addr); + if (tmp == &parent_map::deferred) { - /* Defer because origin is in other shard. */ + /* Defer because origin is deferred. */ *maybe_defer = addr; } + else + *parent_entry = tmp; + } + else + { + /* Defer because origin is in other shard. */ + *maybe_defer = addr; } }