From patchwork Sun Nov 5 18:12:09 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom Tromey X-Patchwork-Id: 79123 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 01E463856948 for ; Sun, 5 Nov 2023 19:58:09 +0000 (GMT) X-Original-To: gdb-patches@sourceware.org Delivered-To: gdb-patches@sourceware.org Received: from omta036.useast.a.cloudfilter.net (omta036.useast.a.cloudfilter.net [44.202.169.35]) by sourceware.org (Postfix) with ESMTPS id 5748C3858C20 for ; Sun, 5 Nov 2023 19:57:52 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 5748C3858C20 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=tromey.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=tromey.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 5748C3858C20 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=44.202.169.35 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1699214274; cv=none; b=NjPCLY1wHKJZXbFNYzddt+Ac8JreTmc+mC4LOkYEOy6tDsD4VDxksXmF2BK3Nplf9vRs4aL0wIhNkiGojIs9iHAmwniDjdZXztqoxn7ChryN8R4UWJlV6+B3JHTdKYk/12WKxqgAuu/d8ofL46Uxwyae5BX2F9VoWQnJJP2Ic7M= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1699214274; c=relaxed/simple; bh=roDwAUCNogpOS9pC4dDKFZK2s6c/4oAbIP/ab/NSjDA=; h=DKIM-Signature:From:Date:Subject:MIME-Version:Message-Id:To; b=Iusq2lU1qBqK7PVU2b7E4hlwvRsFrRSfKRZ9t7I09iZ9JQip6M15vvlCzPADQ/rw95SY2qYBH4pWeu4lH6x/2mwzUZgQjR4+AYPBI53ITQ77ufI3J4oSebJJ0WdWGHi59aIQ9edtaUZNIrXK76HM5mAqXLZbckpV4d8y5Q7XglY= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from eig-obgw-6007a.ext.cloudfilter.net ([10.0.30.247]) by cmsmtp with ESMTPS id zVEzq92vYgpyEzjFnq8bvG; Sun, 05 Nov 2023 19:57:52 +0000 Received: from box5379.bluehost.com ([162.241.216.53]) by cmsmtp with ESMTPS id zjFnqwsn15ZLUzjFnqCoiC; Sun, 05 Nov 2023 19:57:51 +0000 X-Authority-Analysis: v=2.4 cv=S57KfagP c=1 sm=1 tr=0 ts=6547f3bf a=ApxJNpeYhEAb1aAlGBBbmA==:117 a=ApxJNpeYhEAb1aAlGBBbmA==:17 a=OWjo9vPv0XrRhIrVQ50Ab3nP57M=:19 a=dLZJa+xiwSxG16/P+YVxDGlgEgI=:19 a=IkcTkHD0fZMA:10 a=BNY50KLci1gA:10 a=Qbun_eYptAEA:10 a=Huhfutk92yl2WNji-aoA:9 a=QEXdDO2ut3YA:10 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=tromey.com; s=default; h=To:In-Reply-To:References:Message-Id:Content-Transfer-Encoding: Content-Type:MIME-Version:Subject:Date:From:Sender:Reply-To:Cc: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=YWkbbhhjntiqWUt/NVULWZJxsnMs4Npq6CXOQ3TsQtg=; b=CT3dMmewqmYWXCGQhj4bFEkLwn XySrnO2Mhj0wq+R/7XZSCbfAIiAxA6nPf7GIYcvQEDvXJB1OYpVv3ylGkG8egfh/oF4iwPRkDca4e LmW7+J9r21MrZvrP7g6o2M97K; Received: from 97-122-77-73.hlrn.qwest.net ([97.122.77.73]:51014 helo=[192.168.0.21]) by box5379.bluehost.com with esmtpsa (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96.2) (envelope-from ) id 1qzhax-003Y66-1u for gdb-patches@sourceware.org; Sun, 05 Nov 2023 11:11:35 -0700 From: Tom Tromey Date: Sun, 05 Nov 2023 11:12:09 -0700 Subject: [PATCH v2 31/31] Change language_defn::read_var_value to accept block_symbol MIME-Version: 1.0 Message-Id: <20231105-split-objfile-2023-bound-sym-october-v2-31-dbd2d158bbc3@tromey.com> References: <20231105-split-objfile-2023-bound-sym-october-v2-0-dbd2d158bbc3@tromey.com> In-Reply-To: <20231105-split-objfile-2023-bound-sym-october-v2-0-dbd2d158bbc3@tromey.com> To: gdb-patches@sourceware.org X-Mailer: b4 0.12.4 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.77.73 X-Source-L: No X-Exim-ID: 1qzhax-003Y66-1u X-Source: X-Source-Args: X-Source-Dir: X-Source-Sender: 97-122-77-73.hlrn.qwest.net ([192.168.0.21]) [97.122.77.73]:51014 X-Source-Auth: tom+tromey.com X-Email-Count: 2 X-Org: HG=bhshared;ORG=bluehost; X-Source-Cap: ZWx5bnJvYmk7ZWx5bnJvYmk7Ym94NTM3OS5ibHVlaG9zdC5jb20= X-Local-Domain: yes X-CMAE-Envelope: MS4xfMyAepRXMGfwtpNxQ9i+FeGx9+OYUISShHveN+nmbqh+HsatYAgglJN6QA0WRFB5QVwYftZE0dHjn+b7d3N/D6WAfxvGO0T6ghSIYmAFOD4YJyxfuX4G 66f3CdlqIiARq11YJfqSarZ5BAo0VVHvRnoNFwwksqE/QyvZ7ejQFfqtP7fGQjILqbbBjIHDGJWhvaRRTN050R6eFKEVlKaw8Nw= X-Spam-Status: No, score=-3023.7 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, GIT_PATCH_0, JMQ_SPF_NEUTRAL, KAM_STOCKGEN, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, 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 This changes language_defn::read_var_value to accept a block_symbol, and to call block_symbol::address. --- gdb/ada-lang.c | 9 ++++----- gdb/findvar.c | 17 ++++++++--------- gdb/language.h | 14 ++++---------- 3 files changed, 16 insertions(+), 24 deletions(-) diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c index 6beadad568a..ad39f5d496c 100644 --- a/gdb/ada-lang.c +++ b/gdb/ada-lang.c @@ -13391,8 +13391,7 @@ class ada_language : public language_defn /* Implement the "read_var_value" language_defn method for Ada. */ - struct value *read_var_value (struct symbol *var, - const struct block *var_block, + struct value *read_var_value (block_symbol var, frame_info_ptr frame) const override { /* The only case where default_read_var_value is not sufficient @@ -13400,13 +13399,13 @@ class ada_language : public language_defn if (frame != nullptr) { const struct block *frame_block = get_frame_block (frame, NULL); - if (frame_block != nullptr && ada_is_renaming_symbol (var)) - return ada_read_renaming_var_value (var, frame_block); + if (frame_block != nullptr && ada_is_renaming_symbol (var.symbol)) + return ada_read_renaming_var_value (var.symbol, frame_block); } /* This is a typical case where we expect the default_read_var_value function to work. */ - return language_defn::read_var_value (var, var_block, frame); + return language_defn::read_var_value (var, frame); } /* See language.h. */ diff --git a/gdb/findvar.c b/gdb/findvar.c index 4282d85425a..359024e931b 100644 --- a/gdb/findvar.c +++ b/gdb/findvar.c @@ -549,11 +549,10 @@ get_hosting_frame (struct symbol *var, const struct block *var_block, /* See language.h. */ struct value * -language_defn::read_var_value (struct symbol *var, - const struct block *var_block, - frame_info_ptr frame) const +language_defn::read_var_value (block_symbol bvar, frame_info_ptr frame) const { struct value *v; + symbol *var = bvar.symbol; struct type *type = var->type (); CORE_ADDR addr; enum symbol_needs_kind sym_need; @@ -572,7 +571,7 @@ language_defn::read_var_value (struct symbol *var, error (_("Cannot read `%s' without registers"), var->print_name ()); if (frame != NULL) - frame = get_hosting_frame (var, var_block, frame); + frame = get_hosting_frame (var, bvar.block, frame); if (SYMBOL_COMPUTED_OPS (var) != NULL) return SYMBOL_COMPUTED_OPS (var)->read_variable (var, frame); @@ -598,11 +597,11 @@ language_defn::read_var_value (struct symbol *var, if (overlay_debugging) { struct objfile *var_objfile = var->objfile (); - addr = symbol_overlayed_address (var->value_address (), + addr = symbol_overlayed_address (bvar.address (), var->obj_section (var_objfile)); } else - addr = var->value_address (); + addr = bvar.address (); /* First convert the CORE_ADDR to a function pointer type, this ensures the gdbarch knows what type of pointer we are @@ -635,10 +634,10 @@ language_defn::read_var_value (struct symbol *var, case LOC_STATIC: if (overlay_debugging) addr - = symbol_overlayed_address (var->value_address (), + = symbol_overlayed_address (bvar.address (), var->obj_section (var->objfile ())); else - addr = var->value_address (); + addr = bvar.address (); break; case LOC_ARG: @@ -790,7 +789,7 @@ read_var_value (block_symbol var, frame_info_ptr frame) gdb_assert (lang != NULL); - return lang->read_var_value (var.symbol, var.block, frame); + return lang->read_var_value (var, frame); } /* Install default attributes for register values. */ diff --git a/gdb/language.h b/gdb/language.h index 6ee8f6160e1..ede720ef7c8 100644 --- a/gdb/language.h +++ b/gdb/language.h @@ -308,19 +308,13 @@ struct language_defn struct ui_file *stream, const value_print_options *options) const; - /* Given a symbol VAR, the corresponding block VAR_BLOCK (if any) and a - stack frame id FRAME, read the value of the variable and return (pointer - to a) struct value containing the value. - - VAR_BLOCK is needed if there's a possibility for VAR to be outside - FRAME. This is what happens if FRAME correspond to a nested function - and VAR is defined in the outer function. If callers know that VAR is - located in FRAME or is global/static, NULL can be passed as VAR_BLOCK. + /* Given a block_symbol VAR and a stack frame id FRAME, read the + value of the variable and return (pointer to a) struct value + containing the value. Throw an error if the variable cannot be found. */ - virtual struct value *read_var_value (struct symbol *var, - const struct block *var_block, + virtual struct value *read_var_value (block_symbol var, frame_info_ptr frame) const; /* Return information about whether TYPE should be passed