From: Tom Tromey <tom@tromey.com>
To: gdb-patches@sourceware.org
Subject: [PATCH 17/47] Convert value_lval_const and deprecated_lval_hack to methods
Date: Thu, 09 Feb 2023 14:38:38 -0700 [thread overview]
Message-ID: <20230209-submit-value-fixups-2023-v1-17-55dc2794dbb9@tromey.com> (raw)
In-Reply-To: <20230209-submit-value-fixups-2023-v1-0-55dc2794dbb9@tromey.com>
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 (), _("<optimized out>"));
@@ -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
--
2.39.1
next prev parent reply other threads:[~2023-02-09 21:38 UTC|newest]
Thread overview: 60+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-02-09 21:38 [PATCH 00/47] Use methods for struct value Tom Tromey
2023-02-09 21:38 ` [PATCH 01/47] Rename all fields of " Tom Tromey
2023-02-10 21:05 ` Tom Tromey
2023-02-09 21:38 ` [PATCH 02/47] Move ~value body out-of-line Tom Tromey
2023-02-09 21:38 ` [PATCH 03/47] Move struct value to value.h Tom Tromey
2023-02-09 21:38 ` [PATCH 04/47] Turn value_type into method Tom Tromey
2023-02-09 21:38 ` [PATCH 05/47] Turn deprecated_set_value_type into a method Tom Tromey
2023-02-09 21:38 ` [PATCH 06/47] Turn value_arch into method Tom Tromey
2023-02-10 2:08 ` Simon Marchi
2023-02-10 16:36 ` Tom Tromey
2023-02-09 21:38 ` [PATCH 07/47] Turn value_bitsize " Tom Tromey
2023-02-09 21:38 ` [PATCH 08/47] Turn value_bitpos " Tom Tromey
2023-02-09 21:38 ` [PATCH 09/47] Turn value_parent " Tom Tromey
2023-02-09 21:38 ` [PATCH 10/47] Turn value_offset " Tom Tromey
2023-02-09 21:38 ` [PATCH 11/47] Turn deprecated_value_modifiable " Tom Tromey
2023-02-09 21:38 ` [PATCH 12/47] Turn value_enclosing_type " Tom Tromey
2023-02-09 21:38 ` [PATCH 13/47] Turn some value offset functions " Tom Tromey
2023-02-09 21:38 ` [PATCH 14/47] Turn value_lazy and set_value_lazy functions into methods Tom Tromey
2023-02-09 21:38 ` [PATCH 15/47] Turn value_stack and set_value_stack " Tom Tromey
2023-02-09 21:38 ` [PATCH 16/47] Turn value_computed_closure and value_computed_funcs " Tom Tromey
2023-02-09 21:38 ` Tom Tromey [this message]
2023-02-09 21:38 ` [PATCH 18/47] Turn value_initialized and set_value_initialized " Tom Tromey
2023-02-09 21:38 ` [PATCH 19/47] Turn value_address and set_value_address " Tom Tromey
2023-02-09 21:38 ` [PATCH 20/47] Turn more deprecated_* " Tom Tromey
2023-02-09 21:38 ` [PATCH 21/47] Turn allocate_value_lazy into a static "constructor" Tom Tromey
2023-02-09 21:38 ` [PATCH 22/47] Turn allocate_value " Tom Tromey
2023-02-09 21:38 ` [PATCH 23/47] Turn allocate_computed_value into " Tom Tromey
2023-02-09 21:38 ` [PATCH 24/47] Turn allocate_optimized_out_value " Tom Tromey
2023-02-09 21:38 ` [PATCH 25/47] Turn value_zero " Tom Tromey
2023-02-09 21:38 ` [PATCH 26/47] Turn some value_contents functions into methods Tom Tromey
2023-02-09 21:38 ` [PATCH 27/47] Turn value_fetch_lazy into a method Tom Tromey
2023-02-09 21:38 ` [PATCH 28/47] Turn allocate_value_contents " Tom Tromey
2023-02-09 21:38 ` [PATCH 29/47] Turn value_contents_eq " Tom Tromey
2023-02-10 2:18 ` Simon Marchi
2023-02-10 17:46 ` Tom Tromey
2023-02-09 21:38 ` [PATCH 30/47] Turn value_bits_synthetic_pointer " Tom Tromey
2023-02-09 21:38 ` [PATCH 31/47] Move value_ref_policy methods out-of-line Tom Tromey
2023-02-09 21:38 ` [PATCH 32/47] Turn value_incref and value_decref into methods Tom Tromey
2023-02-09 21:38 ` [PATCH 33/47] Turn remaining value_contents functions " Tom Tromey
2023-02-10 2:24 ` Simon Marchi
2023-02-10 17:46 ` Tom Tromey
2023-02-09 21:38 ` [PATCH 34/47] Fully qualify calls to copy in value.c Tom Tromey
2023-02-09 21:38 ` [PATCH 35/47] Turn value_copy into a method Tom Tromey
2023-02-10 2:42 ` Simon Marchi
2023-02-10 18:03 ` Tom Tromey
2023-02-09 21:38 ` [PATCH 36/47] Turn many optimized-out value functions into methods Tom Tromey
2023-02-09 21:38 ` [PATCH 37/47] Turn value_non_lval and value_force_lval " Tom Tromey
2023-02-09 21:38 ` [PATCH 38/47] Turn set_value_component_location into method Tom Tromey
2023-02-09 21:39 ` [PATCH 39/47] Change some code to use value methods Tom Tromey
2023-02-09 21:39 ` [PATCH 40/47] Turn some xmethod functions into methods Tom Tromey
2023-02-09 21:39 ` [PATCH 41/47] Turn preserve_one_value into method Tom Tromey
2023-02-09 21:39 ` [PATCH 42/47] Turn various value copying-related functions into methods Tom Tromey
2023-02-10 20:20 ` Tom Tromey
2023-02-09 21:39 ` [PATCH 43/47] Add value::set_modifiable Tom Tromey
2023-02-09 21:39 ` [PATCH 44/47] Make struct value data members private Tom Tromey
2023-02-09 21:39 ` [PATCH 45/47] Make ~value private Tom Tromey
2023-02-09 21:39 ` [PATCH 46/47] Introduce set_lval method on value Tom Tromey
2023-02-09 21:39 ` [PATCH 47/47] Remove deprecated_lval_hack Tom Tromey
2023-02-10 2:54 ` [PATCH 00/47] Use methods for struct value Simon Marchi
2023-02-10 18:08 ` Tom Tromey
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230209-submit-value-fixups-2023-v1-17-55dc2794dbb9@tromey.com \
--to=tom@tromey.com \
--cc=gdb-patches@sourceware.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).