From patchwork Sun Oct 29 23:23:51 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom Tromey X-Patchwork-Id: 78725 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 AFFCE3861923 for ; Mon, 30 Oct 2023 00:21:54 +0000 (GMT) X-Original-To: gdb-patches@sourceware.org Delivered-To: gdb-patches@sourceware.org Received: from omta038.useast.a.cloudfilter.net (omta038.useast.a.cloudfilter.net [44.202.169.37]) by sourceware.org (Postfix) with ESMTPS id 52A1D385697B for ; Mon, 30 Oct 2023 00:21:28 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 52A1D385697B 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 52A1D385697B Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=44.202.169.37 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1698625294; cv=none; b=EFwTsjEasto7ceTUHSJBatwZ3Z/dIHd0+8POdHS2XZL3+/W1zFSKIxKZNYoI1Aqu6NpkdoxNT3BowoH207Me/2o3N08KS5qqACz4N5aTgLv8sd+Ghi/FTKHJL86ilYFBfNQ7C/MWOTfsSqVuF0XXGbMM7lLeAreWYUXUQsvkgjY= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1698625294; c=relaxed/simple; bh=xercNUNMmZaW3xfKliPJr27ANIh+ZQsguM9dZKtAQOs=; h=DKIM-Signature:From:Date:Subject:MIME-Version:Message-Id:To; b=RFtzhWwhk1GosczFAHPEYyMeeJdp2wUWzNCbUaNf8NWbfEYT3qPmwzsktEG1nHbsKgJEp1dR4y7BdMWA2yUZivPQ1FgTc1zegoOYV5T+yRfZUCw3UXqqkYQstErwEN61jLgGTXs7mqGARm2V56n+UVATMcBHQll+sz/+x+oCOaM= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from eig-obgw-6004a.ext.cloudfilter.net ([10.0.30.197]) by cmsmtp with ESMTPS id x2aTq5nElWcCIxG23qWdyl; Mon, 30 Oct 2023 00:21:28 +0000 Received: from box5379.bluehost.com ([162.241.216.53]) by cmsmtp with ESMTPS id xG23qFmJnwasUxG23qqXGc; Mon, 30 Oct 2023 00:21:27 +0000 X-Authority-Analysis: v=2.4 cv=ZpP+lv3G c=1 sm=1 tr=0 ts=653ef707 a=ApxJNpeYhEAb1aAlGBBbmA==:117 a=ApxJNpeYhEAb1aAlGBBbmA==:17 a=OWjo9vPv0XrRhIrVQ50Ab3nP57M=:19 a=dLZJa+xiwSxG16/P+YVxDGlgEgI=:19 a=IkcTkHD0fZMA:10 a=bhdUkHdE2iEA:10 a=Qbun_eYptAEA:10 a=A3__3NFg9PEdqGV-UCIA: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=rKfaiRNmYMOVpszcVRspoGWOoiHaGShMJ8wd54gnrkk=; b=RvSl23rrdLQwd9hKB45pAnRgRk ohrGczZDy2DJuBIL8kJGUPWriYBf+Cpu0z/QdN0CHuEwibrIfTEYTOCU3qo2r7BZACpD+RX6voz6/ 36qcjJT/023N9AzXQbEJP6VcB; Received: from 97-122-77-73.hlrn.qwest.net ([97.122.77.73]:56344 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 1qxF7e-0042zY-0D for gdb-patches@sourceware.org; Sun, 29 Oct 2023 17:23:10 -0600 From: Tom Tromey Date: Sun, 29 Oct 2023 17:23:51 -0600 Subject: [PATCH 30/30] Change language_defn::read_var_value to accept block_symbol MIME-Version: 1.0 Message-Id: <20231029-split-objfile-2023-bound-sym-october-v1-30-612531df2734@tromey.com> References: <20231029-split-objfile-2023-bound-sym-october-v1-0-612531df2734@tromey.com> In-Reply-To: <20231029-split-objfile-2023-bound-sym-october-v1-0-612531df2734@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: 1qxF7e-0042zY-0D 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]:56344 X-Source-Auth: tom+tromey.com X-Email-Count: 1 X-Org: HG=bhshared;ORG=bluehost; X-Source-Cap: ZWx5bnJvYmk7ZWx5bnJvYmk7Ym94NTM3OS5ibHVlaG9zdC5jb20= X-Local-Domain: yes X-CMAE-Envelope: MS4xfH+zjFP2vosORlUL6mZh2xbdOCAP3y0hy42EzM43eObCGaqzBvFOXIX4bo2eN2y0l41urfx5Qen3mXMD2pXQ6ISowyxt0zBUePOY4P9rpXwS2x4I56KB hfH0ZYBIdjcqycNZtY0r8CAPtbhjFBJYH688pOQRt6vUw09NeqoIsqS0wdOmfAZOcDzAw+j6SkWq/AMI6aqSZ4fY7Gxd4brb++Y= X-Spam-Status: No, score=-3023.8 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, GIT_PATCH_0, JMQ_SPF_NEUTRAL, KAM_STOCKGEN, RCVD_IN_DNSWL_NONE, 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 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 1f854940b36..69a57641c42 100644 --- a/gdb/ada-lang.c +++ b/gdb/ada-lang.c @@ -13406,8 +13406,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 @@ -13415,13 +13414,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