From patchwork Thu Jan 4 14:19:10 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom de Vries X-Patchwork-Id: 83311 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 E56B93858025 for ; Thu, 4 Jan 2024 14:19: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 5DE643858C41 for ; Thu, 4 Jan 2024 14:18:52 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 5DE643858C41 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 5DE643858C41 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=1704377934; cv=none; b=O2H/ck/v3qfy0wbpnlxeY9o+DtXalrn6sawLm/EhXNlnPnJ0OtrjQY5txL3+OnYcx4rYIbmN2wwjN4k7wdHKXYYeppvwWgYd06bLbwgeROVlwvvdgQjppz8vGYvmdjaR0dhJvvPB7sSwXYi3/ZSvYfjWojc93/gm3NNJA8UXUy8= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1704377934; c=relaxed/simple; bh=zLO483VnPDrB5/6U920k2lkeH+2sv656+RyzyGS4RrU=; h=DKIM-Signature:DKIM-Signature:DKIM-Signature:DKIM-Signature:From: To:Subject:Date:Message-Id:MIME-Version; b=j+PnI/DUcAyw92OTVU+YCBYSNK7rGcZ9OyeZLaQmCmP/7YbZrc1G4Ajv002UXEDQR9jjzgkiDhhnFvcgVw+aCm3ezchHgh8T1F7QhC4Yxc5LbmglD8jcbJda9gntyIwcwm0ShgA2fCfBiYDCzQcJufNtlHp+RK5ggjejNkSa+78= 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 359D221E1D for ; Thu, 4 Jan 2024 14:18:51 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1704377931; 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=1A7VGC+2+n/PAU9H0rqSSw4vOTxIGfkawfENCjoXLuU=; b=orP3DPgb8Jy7Iu/K+lzNGL4rxGJ4mSMD4I43zJdf6OJMKTrkN0yO4logm9OAV5ygQU2qSQ EUSx7ZEZDHdtCgqy7P7l/yVsF7gb4PYTMc40u6OuFYhPDwuAQr1th5zavi/2uSA/UJ9iMY TRhLmrtvi6egvVtBrq2va6xgjwfrWZk= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1704377931; 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=1A7VGC+2+n/PAU9H0rqSSw4vOTxIGfkawfENCjoXLuU=; b=Stn58ZeRLoC9M8oEfU5TDyH784bp4VSBDj/zDXVgnQKzCkYGaQ5RFSZ6gEg16fqh0vSfQ/ hnEgLPO1ox4o8TAA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1704377931; 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=1A7VGC+2+n/PAU9H0rqSSw4vOTxIGfkawfENCjoXLuU=; b=orP3DPgb8Jy7Iu/K+lzNGL4rxGJ4mSMD4I43zJdf6OJMKTrkN0yO4logm9OAV5ygQU2qSQ EUSx7ZEZDHdtCgqy7P7l/yVsF7gb4PYTMc40u6OuFYhPDwuAQr1th5zavi/2uSA/UJ9iMY TRhLmrtvi6egvVtBrq2va6xgjwfrWZk= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1704377931; 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=1A7VGC+2+n/PAU9H0rqSSw4vOTxIGfkawfENCjoXLuU=; b=Stn58ZeRLoC9M8oEfU5TDyH784bp4VSBDj/zDXVgnQKzCkYGaQ5RFSZ6gEg16fqh0vSfQ/ hnEgLPO1ox4o8TAA== 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 1EE9313C99 for ; Thu, 4 Jan 2024 14:18:51 +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 6DQ8Bku+lmUSOwAAD6G6ig (envelope-from ) for ; Thu, 04 Jan 2024 14:18:51 +0000 From: Tom de Vries To: gdb-patches@sourceware.org Subject: [PATCH 2/3] [gdb/symtab] Make cooked_index_entry::parent_entry private Date: Thu, 4 Jan 2024 15:19:10 +0100 Message-Id: <20240104141911.7596-3-tdevries@suse.de> X-Mailer: git-send-email 2.35.3 In-Reply-To: <20240104141911.7596-1-tdevries@suse.de> References: <20240104141911.7596-1-tdevries@suse.de> MIME-Version: 1.0 X-Spamd-Result: default: False [1.90 / 50.00]; ARC_NA(0.00)[]; RCVD_VIA_SMTP_AUTH(0.00)[]; URIBL_BLOCKED(0.00)[tail.data:url]; 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]; 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%] Authentication-Results: smtp-out1.suse.de; none X-Spam-Score: 1.90 X-Spam-Status: No, score=-12.3 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 Make cooked_index_entry::parent_entry private, and add member functions to access it. Tested on x86_64-linux. --- gdb/dwarf2/cooked-index.c | 14 +++++++------- gdb/dwarf2/cooked-index.h | 25 +++++++++++++++++++------ gdb/dwarf2/read.c | 6 +++--- 3 files changed, 29 insertions(+), 16 deletions(-) diff --git a/gdb/dwarf2/cooked-index.c b/gdb/dwarf2/cooked-index.c index f9850d39bd0..307cfe74a87 100644 --- a/gdb/dwarf2/cooked-index.c +++ b/gdb/dwarf2/cooked-index.c @@ -186,7 +186,7 @@ cooked_index_entry::full_name (struct obstack *storage, bool for_main) const { const char *local_name = for_main ? name : canonical; - if ((flags & IS_LINKAGE) != 0 || parent_entry == nullptr) + if ((flags & IS_LINKAGE) != 0 || get_parent () == nullptr) return local_name; const char *sep = nullptr; @@ -207,7 +207,7 @@ cooked_index_entry::full_name (struct obstack *storage, bool for_main) const return local_name; } - parent_entry->write_scope (storage, sep, for_main); + get_parent ()->write_scope (storage, sep, for_main); obstack_grow0 (storage, local_name, strlen (local_name)); return (const char *) obstack_finish (storage); } @@ -219,8 +219,8 @@ cooked_index_entry::write_scope (struct obstack *storage, const char *sep, bool for_main) const { - if (parent_entry != nullptr) - parent_entry->write_scope (storage, sep, for_main); + if (get_parent () != nullptr) + get_parent ()->write_scope (storage, sep, for_main); const char *local_name = for_main ? name : canonical; obstack_grow (storage, local_name, strlen (local_name)); obstack_grow (storage, sep, strlen (sep)); @@ -299,7 +299,7 @@ cooked_index_shard::handle_gnat_encoded_entry (cooked_index_entry *entry, parent = last; } - entry->parent_entry = parent; + entry->set_parent (parent); return make_unique_xstrndup (tail.data (), tail.length ()); } @@ -585,9 +585,9 @@ cooked_index::dump (gdbarch *arch) const gdb_printf (" flags: %s\n", to_string (entry->flags).c_str ()); gdb_printf (" DIE offset: %s\n", sect_offset_str (entry->die_offset)); - if (entry->parent_entry != nullptr) + if (entry->get_parent () != nullptr) gdb_printf (" parent: ((cooked_index_entry *) %p) [%s]\n", - entry->parent_entry, entry->parent_entry->name); + entry->get_parent (), entry->get_parent ()->name); else gdb_printf (" parent: ((cooked_index_entry *) 0)\n"); diff --git a/gdb/dwarf2/cooked-index.h b/gdb/dwarf2/cooked-index.h index 452a07ffb80..2b2f2f79bab 100644 --- a/gdb/dwarf2/cooked-index.h +++ b/gdb/dwarf2/cooked-index.h @@ -84,8 +84,8 @@ struct cooked_index_entry : public allocate_on_obstack tag (tag_), flags (flags_), die_offset (die_offset_), - parent_entry (parent_entry_), - per_cu (per_cu_) + per_cu (per_cu_), + m_parent_entry (parent_entry_) { } @@ -210,6 +210,18 @@ struct cooked_index_entry : public allocate_on_obstack return compare (canonical, other.canonical, SORT) < 0; } + /* Set parent entry to PARENT. */ + void set_parent (const cooked_index_entry *parent) + { + m_parent_entry = parent; + } + + /* Return parent entry. */ + const cooked_index_entry *get_parent () const + { + return m_parent_entry; + } + /* The name as it appears in DWARF. This always points into one of the mapped DWARF sections. Note that this may be the name or the linkage name -- two entries are created for DIEs which have both @@ -224,10 +236,6 @@ struct cooked_index_entry : public allocate_on_obstack cooked_index_flag flags; /* The offset of this DIE. */ sect_offset die_offset; - /* The parent entry. This is NULL for top-level entries. - Otherwise, it points to the parent entry, such as a namespace or - class. */ - const cooked_index_entry *parent_entry; /* The CU from which this entry originates. */ dwarf2_per_cu_data *per_cu; @@ -238,6 +246,11 @@ struct cooked_index_entry : public allocate_on_obstack a parent, its write_scope method is called first. */ void write_scope (struct obstack *storage, const char *sep, bool for_name) const; + + /* The parent entry. This is NULL for top-level entries. + Otherwise, it points to the parent entry, such as a namespace or + class. */ + const cooked_index_entry *m_parent_entry; }; class cooked_index; diff --git a/gdb/dwarf2/read.c b/gdb/dwarf2/read.c index 61646a5fba0..841746b7473 100644 --- a/gdb/dwarf2/read.c +++ b/gdb/dwarf2/read.c @@ -16421,7 +16421,7 @@ cooked_indexer::index_dies (cutu_reader *reader, /* The scope of a DW_TAG_entry_point cooked_index_entry is the one of its surrounding subroutine. */ if (abbrev->tag == DW_TAG_entry_point) - this_parent_entry = parent_entry->parent_entry; + this_parent_entry = parent_entry->get_parent (); info_ptr = scan_attributes (reader->cu->per_cu, reader, info_ptr, info_ptr, abbrev, &name, &linkage_name, &flags, &sibling, &this_parent_entry, @@ -16764,7 +16764,7 @@ cooked_index_functions::expand_symtabs_matching matches. */ bool found = true; - const cooked_index_entry *parent = entry->parent_entry; + const cooked_index_entry *parent = entry->get_parent (); for (int i = name_vec.size () - 1; i > 0; --i) { /* If we ran out of entries, or if this segment doesn't @@ -16777,7 +16777,7 @@ cooked_index_functions::expand_symtabs_matching break; } - parent = parent->parent_entry; + parent = parent->get_parent (); } if (!found)