From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from gproxy1-pub.mail.unifiedlayer.com (gproxy1-pub.mail.unifiedlayer.com [69.89.25.95]) by sourceware.org (Postfix) with ESMTPS id 743BF385B536 for ; Fri, 20 Jan 2023 21:46:44 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 743BF385B536 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=tromey.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=tromey.com Received: from cmgw11.mail.unifiedlayer.com (unknown [10.0.90.126]) by progateway3.mail.pro1.eigbox.com (Postfix) with ESMTP id E4E4310048113 for ; Fri, 20 Jan 2023 21:46:43 +0000 (UTC) Received: from box5379.bluehost.com ([162.241.216.53]) by cmsmtp with ESMTP id IzDfpoFtiJceRIzDfprVGH; Fri, 20 Jan 2023 21:46:43 +0000 X-Authority-Reason: nr=8 X-Authority-Analysis: v=2.4 cv=Or6Kdwzt c=1 sm=1 tr=0 ts=63cb0bc3 a=ApxJNpeYhEAb1aAlGBBbmA==:117 a=ApxJNpeYhEAb1aAlGBBbmA==:17 a=dLZJa+xiwSxG16/P+YVxDGlgEgI=:19 a=RvmDmJFTN0MA:10:nop_rcvd_month_year a=Qbun_eYptAEA:10:endurance_base64_authed_username_1 a=PklsFC0oVL0Hh13o5MkA:9 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=tromey.com; s=default; h=Content-Transfer-Encoding:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Sender:Reply-To:Content-Type:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=n9aQr110ChO0E83Qn95fMfXKncTVLkZEtSXYiylIAFk=; b=mYK6OhIV8cgVg3l4d542LJoaw6 NYHTsJcjhvyeeBsYVtmJb8ZrKQJq3Mi4eBo3eIdJ3pE8htBG7HwKe41bOhG7K2bRBbwwiFZ3MtCWx EgXG1jmQbxKs2IVlw4Y2e9cin; Received: from 97-122-76-186.hlrn.qwest.net ([97.122.76.186]:60144 helo=localhost.localdomain) by box5379.bluehost.com with esmtpsa (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.95) (envelope-from ) id 1pIzDf-001GNx-LF; Fri, 20 Jan 2023 14:46:43 -0700 From: Tom Tromey To: gdb-patches@sourceware.org Cc: Tom Tromey Subject: [PATCH 27/27] Convert contained_in to method Date: Fri, 20 Jan 2023 14:46:18 -0700 Message-Id: <20230120214618.3236224-28-tom@tromey.com> X-Mailer: git-send-email 2.39.0 In-Reply-To: <20230120214618.3236224-1-tom@tromey.com> References: <20230120214618.3236224-1-tom@tromey.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - box5379.bluehost.com X-AntiAbuse: Original Domain - sourceware.org X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - tromey.com X-BWhitelist: no X-Source-IP: 97.122.76.186 X-Source-L: No X-Exim-ID: 1pIzDf-001GNx-LF X-Source: X-Source-Args: X-Source-Dir: X-Source-Sender: 97-122-76-186.hlrn.qwest.net (localhost.localdomain) [97.122.76.186]:60144 X-Source-Auth: tom+tromey.com X-Email-Count: 28 X-Source-Cap: ZWx5bnJvYmk7ZWx5bnJvYmk7Ym94NTM3OS5ibHVlaG9zdC5jb20= X-Local-Domain: yes X-Spam-Status: No, score=-3027.9 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,GIT_PATCH_0,JMQ_SPF_NEUTRAL,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: This converts contained_in to be a method of block. --- gdb/block.c | 7 +++---- gdb/block.h | 19 +++++++++---------- gdb/blockframe.c | 2 +- gdb/breakpoint.c | 2 +- gdb/frame.c | 2 +- gdb/inline-frame.c | 2 +- gdb/parse.c | 2 +- gdb/printcmd.c | 6 +++--- 8 files changed, 20 insertions(+), 22 deletions(-) diff --git a/gdb/block.c b/gdb/block.c index 334d8180448..4e40247b79c 100644 --- a/gdb/block.c +++ b/gdb/block.c @@ -65,15 +65,14 @@ block::gdbarch () const /* See block.h. */ bool -contained_in (const struct block *a, const struct block *b, - bool allow_nested) +block::contains (const struct block *a, bool allow_nested) const { - if (!a || !b) + if (a == nullptr) return false; do { - if (a == b) + if (a == this) return true; /* If A is a function block, then A cannot be contained in B, except if A was inlined. */ diff --git a/gdb/block.h b/gdb/block.h index 32e3c9ebcfd..cdcee0844ec 100644 --- a/gdb/block.h +++ b/gdb/block.h @@ -271,6 +271,15 @@ struct block : public allocate_on_obstack struct dynamic_prop *static_link () const; + /* Return true if block A is lexically nested within this block, or + if A and this block have the same pc range. Return false + otherwise. If ALLOW_NESTED is true, then block A is considered + to be in this block if A is in a nested function in this block's + function. If ALLOW_NESTED is false (the default), then blocks in + nested functions are not considered to be contained. */ + + bool contains (const struct block *a, bool allow_nested = false) const; + private: /* If the namespace_info is NULL, allocate it via OBSTACK and @@ -400,16 +409,6 @@ struct blockvector struct block *m_blocks[1]; }; -/* Return true if block A is lexically nested within block B, or if a - and b have the same pc range. Return false otherwise. If - ALLOW_NESTED is true, then block A is considered to be in block B - if A is in a nested function in B's function. If ALLOW_NESTED is - false (the default), then blocks in nested functions are not - considered to be contained. */ - -extern bool contained_in (const struct block *a, const struct block *b, - bool allow_nested = false); - extern const struct blockvector *blockvector_for_pc (CORE_ADDR, const struct block **); diff --git a/gdb/blockframe.c b/gdb/blockframe.c index 7c9faf487a7..633a9674d97 100644 --- a/gdb/blockframe.c +++ b/gdb/blockframe.c @@ -469,7 +469,7 @@ block_innermost_frame (const struct block *block) while (frame != NULL) { const struct block *frame_block = get_frame_block (frame, NULL); - if (frame_block != NULL && contained_in (frame_block, block)) + if (frame_block != NULL && block->contains (frame_block)) return frame; frame = get_prev_frame (frame); diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c index 475a16e8d73..f6aa3940429 100644 --- a/gdb/breakpoint.c +++ b/gdb/breakpoint.c @@ -5142,7 +5142,7 @@ watchpoint_check (bpstat *bs) function = get_frame_function (fr); if (function == NULL - || !contained_in (b->exp_valid_block, function->value_block ())) + || !function->value_block ()->contains (b->exp_valid_block)) within_current_scope = false; } diff --git a/gdb/frame.c b/gdb/frame.c index 2f9622ad2b2..2e29348110e 100644 --- a/gdb/frame.c +++ b/gdb/frame.c @@ -848,7 +848,7 @@ frame_id_inner (struct gdbarch *gdbarch, struct frame_id l, struct frame_id r) /* This will return true if LB and RB are the same block, or if the block with the smaller depth lexically encloses the block with the greater depth. */ - inner = contained_in (lb, rb); + inner = rb->contains (lb); } else /* Only return non-zero when strictly inner than. Note that, per diff --git a/gdb/inline-frame.c b/gdb/inline-frame.c index 21431a280fa..80765d5cca5 100644 --- a/gdb/inline-frame.c +++ b/gdb/inline-frame.c @@ -293,7 +293,7 @@ block_starting_point_at (CORE_ADDR pc, const struct block *block) if (new_block == NULL) return 1; - if (new_block == block || contained_in (new_block, block)) + if (new_block == block || block->contains (new_block)) return 0; /* The immediately preceding address belongs to a different block, diff --git a/gdb/parse.c b/gdb/parse.c index 4c20b91f238..f2917b30740 100644 --- a/gdb/parse.c +++ b/gdb/parse.c @@ -86,7 +86,7 @@ innermost_block_tracker::update (const struct block *b, { if ((m_types & t) != 0 && (m_innermost_block == NULL - || contained_in (b, m_innermost_block))) + || m_innermost_block->contains (b))) m_innermost_block = b; } diff --git a/gdb/printcmd.c b/gdb/printcmd.c index e3ee847a955..74e2f5160ba 100644 --- a/gdb/printcmd.c +++ b/gdb/printcmd.c @@ -2123,8 +2123,8 @@ do_one_display (struct display *d) if (d->block) { if (d->pspace == current_program_space) - within_current_scope = contained_in (get_selected_block (0), d->block, - true); + within_current_scope = d->block->contains (get_selected_block (0), + true); else within_current_scope = 0; } @@ -2282,7 +2282,7 @@ Num Enb Expression\n")); else if (d->format.format) gdb_printf ("/%c ", d->format.format); gdb_puts (d->exp_string.c_str ()); - if (d->block && !contained_in (get_selected_block (0), d->block, true)) + if (d->block && !d->block->contains (get_selected_block (0), true)) gdb_printf (_(" (cannot be evaluated in the current context)")); gdb_printf ("\n"); } -- 2.39.0