From patchwork Thu Feb 9 21:38:38 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom Tromey X-Patchwork-Id: 64563 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 3C4E9389365A for ; Thu, 9 Feb 2023 21:39:58 +0000 (GMT) X-Original-To: gdb-patches@sourceware.org Delivered-To: gdb-patches@sourceware.org Received: from gproxy2-pub.mail.unifiedlayer.com (gproxy2-pub.mail.unifiedlayer.com [69.89.18.3]) by sourceware.org (Postfix) with ESMTPS id C6F6A3858017 for ; Thu, 9 Feb 2023 21:38:42 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org C6F6A3858017 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 cmgw15.mail.unifiedlayer.com (unknown [10.0.90.130]) by progateway4.mail.pro1.eigbox.com (Postfix) with ESMTP id 2CC5110047E02 for ; Thu, 9 Feb 2023 21:38:42 +0000 (UTC) Received: from box5379.bluehost.com ([162.241.216.53]) by cmsmtp with ESMTP id QEcspZ3qmbdcfQEcsp7Mii; Thu, 09 Feb 2023 21:38:42 +0000 X-Authority-Reason: nr=8 X-Authority-Analysis: v=2.4 cv=AZB0o1bG c=1 sm=1 tr=0 ts=63e567e2 a=ApxJNpeYhEAb1aAlGBBbmA==:117 a=ApxJNpeYhEAb1aAlGBBbmA==:17 a=dLZJa+xiwSxG16/P+YVxDGlgEgI=:19 a=IkcTkHD0fZMA:10:nop_charset_1 a=m04uMKEZRckA:10:nop_rcvd_month_year a=Qbun_eYptAEA:10:endurance_base64_authed_username_1 a=tdbrao5GkmUthlhii5QA:9 a=QEXdDO2ut3YA:10:nop_charset_2 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=PLBNB90FI0SReJsTdMvFIO/Dc+mSnB5213iPgJX9Ulg=; b=v5SyJ5O2KhJBlW8zfutH+4NPOC A4E4bqwEGpXhtyFfnliP1VITIxC/K+73Xdi3Y/UikeyviK5OOvTglaZZpU1LUtXH5zeykf6meQ//0 LKGh0Fc5YFNysYhbWnrQ+vaXB; Received: from 75-166-130-93.hlrn.qwest.net ([75.166.130.93]:52822 helo=[192.168.0.21]) by box5379.bluehost.com with esmtpsa (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.95) (envelope-from ) id 1pQEcs-001ZcE-0W for gdb-patches@sourceware.org; Thu, 09 Feb 2023 14:38:42 -0700 From: Tom Tromey Date: Thu, 09 Feb 2023 14:38:38 -0700 Subject: [PATCH 17/47] Convert value_lval_const and deprecated_lval_hack to methods MIME-Version: 1.0 Message-Id: <20230209-submit-value-fixups-2023-v1-17-55dc2794dbb9@tromey.com> References: <20230209-submit-value-fixups-2023-v1-0-55dc2794dbb9@tromey.com> In-Reply-To: <20230209-submit-value-fixups-2023-v1-0-55dc2794dbb9@tromey.com> To: gdb-patches@sourceware.org X-Mailer: b4 0.12.0 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: 75.166.130.93 X-Source-L: No X-Exim-ID: 1pQEcs-001ZcE-0W X-Source: X-Source-Args: X-Source-Dir: X-Source-Sender: 75-166-130-93.hlrn.qwest.net ([192.168.0.21]) [75.166.130.93]:52822 X-Source-Auth: tom+tromey.com X-Email-Count: 18 X-Source-Cap: ZWx5bnJvYmk7ZWx5bnJvYmk7Ym94NTM3OS5ibHVlaG9zdC5jb20= X-Local-Domain: yes X-Spam-Status: No, score=-3025.4 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, GIT_PATCH_0, JMQ_SPF_NEUTRAL, RCVD_IN_BL_SPAMCOP_NET, 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 X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 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 Sender: "Gdb-patches" This converts the value_lval_const and deprecated_lval_hack functions to be methods on value. --- gdb/f-lang.c | 2 +- gdb/gnu-v3-abi.c | 4 ++-- gdb/valprint.c | 6 +++--- gdb/value.c | 14 +------------- gdb/value.h | 12 +++++++----- 5 files changed, 14 insertions(+), 24 deletions(-) diff --git a/gdb/f-lang.c b/gdb/f-lang.c index d88e81c4a11..57c31efc980 100644 --- a/gdb/f-lang.c +++ b/gdb/f-lang.c @@ -458,7 +458,7 @@ fortran_associated (struct gdbarch *gdbarch, const language_defn *lang, looking the value of the pointer itself. We make the assumption that a non-associated pointer will be set to 0. This is probably true for most targets, but might not be true for everyone. */ - if (value_lval_const (target) != lval_memory + if (target->lval () != lval_memory || type_not_associated (pointer_type) || (TYPE_ASSOCIATED_PROP (pointer_type) == nullptr && pointer_type->code () == TYPE_CODE_PTR diff --git a/gdb/gnu-v3-abi.c b/gdb/gnu-v3-abi.c index 36d54b9312b..dc249f0980e 100644 --- a/gdb/gnu-v3-abi.c +++ b/gdb/gnu-v3-abi.c @@ -1102,7 +1102,7 @@ gnuv3_get_typeid (struct value *value) /* We have to handle values a bit trickily here, to allow this code to work properly with non_lvalue values that are really just disguised types. */ - if (value_lval_const (value) == lval_memory) + if (value->lval () == lval_memory) value = coerce_ref (value); type = check_typedef (value->type ()); @@ -1134,7 +1134,7 @@ gnuv3_get_typeid (struct value *value) /* We check for lval_memory because in the "typeid (type-id)" case, the type is passed via a not_lval value object. */ if (type->code () == TYPE_CODE_STRUCT - && value_lval_const (value) == lval_memory + && value->lval () == lval_memory && gnuv3_dynamic_class (type)) { struct value *vtable, *typeinfo_value; diff --git a/gdb/valprint.c b/gdb/valprint.c index 6aef98e37c1..d2fbc93284f 100644 --- a/gdb/valprint.c +++ b/gdb/valprint.c @@ -392,7 +392,7 @@ valprint_check_validity (struct ui_file *stream, const struct value *deref_val = coerce_ref_if_computed (val); if (deref_val != NULL) - ref_is_addressable = value_lval_const (deref_val) == lval_memory; + ref_is_addressable = deref_val->lval () == lval_memory; } if (!is_ref || !ref_is_addressable) @@ -416,7 +416,7 @@ valprint_check_validity (struct ui_file *stream, void val_print_optimized_out (const struct value *val, struct ui_file *stream) { - if (val != NULL && value_lval_const (val) == lval_register) + if (val != NULL && val->lval () == lval_register) val_print_not_saved (stream); else fprintf_styled (stream, metadata_style.style (), _("")); @@ -548,7 +548,7 @@ get_value_addr_contents (struct value *deref_val) { gdb_assert (deref_val != NULL); - if (value_lval_const (deref_val) == lval_memory) + if (deref_val->lval () == lval_memory) return value_contents_for_printing_const (value_addr (deref_val)).data (); else { diff --git a/gdb/value.c b/gdb/value.c index 495a45d50ba..b6fa5929dc1 100644 --- a/gdb/value.c +++ b/gdb/value.c @@ -1268,18 +1268,6 @@ value::computed_closure () const return m_location.computed.closure; } -enum lval_type * -deprecated_value_lval_hack (struct value *value) -{ - return &value->m_lval; -} - -enum lval_type -value_lval_const (const struct value *value) -{ - return value->m_lval; -} - CORE_ADDR value_address (const struct value *value) { @@ -3530,7 +3518,7 @@ coerce_ref_if_computed (const struct value *arg) if (!TYPE_IS_REFERENCE (check_typedef (arg->type ()))) return NULL; - if (value_lval_const (arg) != lval_computed) + if (arg->lval () != lval_computed) return NULL; funcs = arg->computed_funcs (); diff --git a/gdb/value.h b/gdb/value.h index 8a9406d835b..39609c48218 100644 --- a/gdb/value.h +++ b/gdb/value.h @@ -311,6 +311,12 @@ struct value uses. */ void *computed_closure () const; + enum lval_type *deprecated_lval_hack () + { return &m_lval; } + + enum lval_type lval () const + { return m_lval; } + /* Type of value; either not an lval, or one of the various different possible kinds of lval. */ @@ -657,11 +663,7 @@ extern void set_value_component_location (struct value *component, limited to just the first PIECE. Expect further change. */ /* Type of value; either not an lval, or one of the various different possible kinds of lval. */ -extern enum lval_type *deprecated_value_lval_hack (struct value *); -#define VALUE_LVAL(val) (*deprecated_value_lval_hack (val)) - -/* Like VALUE_LVAL, except the parameter can be const. */ -extern enum lval_type value_lval_const (const struct value *value); +#define VALUE_LVAL(val) (*((val)->deprecated_lval_hack ())) /* If lval == lval_memory, return the address in the inferior. If lval == lval_register, return the byte offset into the registers