From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 2126) id C68003858D1E; Mon, 13 Feb 2023 22:27:54 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org C68003858D1E DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1676327274; bh=mB26pRUXIueJcKL7ut0x4EGXWI8r3yk6jyydztV6Tmc=; h=From:To:Subject:Date:From; b=mcCworp4UTLaD4A+qYCA6Bbo7NtI3GcMNcKCM5dhWipx39mC4eXV3OXa5uqIrILOe +opxkV3M7mHh1oLIOMYeSMf/EgYFKuE6pMekYkYhs1okV3hV0L5EoYr0eTfzT83hLk 6kx+GnCXVbSlE9pXwq+kDnlYr1CDjAPhG/M3DYTs= Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable From: Tom Tromey To: gdb-cvs@sourceware.org Subject: [binutils-gdb] Turn value_bitsize into method X-Act-Checkin: binutils-gdb X-Git-Author: Tom Tromey X-Git-Refname: refs/heads/master X-Git-Oldrev: f9ee742cd7f9ea4f6050599a4784cb162dcc49b5 X-Git-Newrev: f49d5fa263e834a4cf171f43a450ac5b1ae5ae30 Message-Id: <20230213222754.C68003858D1E@sourceware.org> Date: Mon, 13 Feb 2023 22:27:54 +0000 (GMT) List-Id: https://sourceware.org/git/gitweb.cgi?p=3Dbinutils-gdb.git;h=3Df49d5fa263e8= 34a4cf171f43a450ac5b1ae5ae30 commit f49d5fa263e834a4cf171f43a450ac5b1ae5ae30 Author: Tom Tromey Date: Tue Jan 31 09:38:22 2023 -0700 Turn value_bitsize into method =20 This changes value_bitsize to be a method of value. Much of this patch was written by script. =20 Approved-By: Simon Marchi Diff: --- gdb/ada-lang.c | 14 +++++++------- gdb/breakpoint.c | 6 +++--- gdb/dwarf2/expr.c | 10 +++++----- gdb/valops.c | 24 ++++++++++++------------ gdb/value.c | 17 +++-------------- gdb/value.h | 12 +++++++----- 6 files changed, 37 insertions(+), 46 deletions(-) diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c index c5b5b14163b..9cbbbb06db3 100644 --- a/gdb/ada-lang.c +++ b/gdb/ada-lang.c @@ -568,7 +568,7 @@ coerce_unspec_val_to_type (struct value *val, struct ty= pe *type) value_contents_copy (result, 0, val, 0, type->length ()); } set_value_component_location (result, val); - set_value_bitsize (result, value_bitsize (val)); + result->set_bitsize (val->bitsize ()); set_value_bitpos (result, value_bitpos (val)); if (VALUE_LVAL (result) =3D=3D lval_memory) set_value_address (result, value_address (val)); @@ -2832,7 +2832,7 @@ ada_value_primitive_packed_val (struct value *obj, co= nst gdb_byte *valaddr, =20 set_value_component_location (v, obj); set_value_bitpos (v, bit_offset + value_bitpos (obj)); - set_value_bitsize (v, bit_size); + v->set_bitsize (bit_size); if (value_bitpos (v) >=3D HOST_CHAR_BIT) { ++new_offset; @@ -2845,7 +2845,7 @@ ada_value_primitive_packed_val (struct value *obj, co= nst gdb_byte *valaddr, set_value_parent (v, obj); } else - set_value_bitsize (v, bit_size); + v->set_bitsize (bit_size); unpacked =3D value_contents_writeable (v).data (); =20 if (bit_size =3D=3D 0) @@ -2878,7 +2878,7 @@ static struct value * ada_value_assign (struct value *toval, struct value *fromval) { struct type *type =3D toval->type (); - int bits =3D value_bitsize (toval); + int bits =3D toval->bitsize (); =20 toval =3D ada_coerce_ref (toval); fromval =3D ada_coerce_ref (fromval); @@ -2907,7 +2907,7 @@ ada_value_assign (struct value *toval, struct value *= fromval) fromval =3D value_cast (type, fromval); =20 read_memory (to_addr, buffer, len); - from_size =3D value_bitsize (fromval); + from_size =3D fromval->bitsize (); if (from_size =3D=3D 0) from_size =3D fromval->type ()->length () * TARGET_CHAR_BIT; =20 @@ -2956,10 +2956,10 @@ value_assign_to_component (struct value *container,= struct value *component, =20 val =3D value_cast (component->type (), val); =20 - if (value_bitsize (component) =3D=3D 0) + if (component->bitsize () =3D=3D 0) bits =3D TARGET_CHAR_BIT * component->type ()->length (); else - bits =3D value_bitsize (component); + bits =3D component->bitsize (); =20 if (type_byte_order (container->type ()) =3D=3D BFD_ENDIAN_BIG) { diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c index eaaef94f59e..7245e8b5b43 100644 --- a/gdb/breakpoint.c +++ b/gdb/breakpoint.c @@ -2092,12 +2092,12 @@ update_watchpoint (struct watchpoint *b, bool repar= se) struct bp_location *loc, **tmp; int bitpos =3D 0, bitsize =3D 0; =20 - if (value_bitsize (v) !=3D 0) + if (v->bitsize () !=3D 0) { /* Extract the bit parameters out from the bitfield sub-expression. */ bitpos =3D value_bitpos (v); - bitsize =3D value_bitsize (v); + bitsize =3D v->bitsize (); } else if (v =3D=3D result && b->val_bitsize !=3D 0) { @@ -10199,7 +10199,7 @@ watch_command_1 (const char *arg, int accessflag, i= nt from_tty, if (val_as_value !=3D NULL && just_location) { saved_bitpos =3D value_bitpos (val_as_value); - saved_bitsize =3D value_bitsize (val_as_value); + saved_bitsize =3D val_as_value->bitsize (); } =20 value_ref_ptr val; diff --git a/gdb/dwarf2/expr.c b/gdb/dwarf2/expr.c index 7310295db4d..cbc20509cbe 100644 --- a/gdb/dwarf2/expr.c +++ b/gdb/dwarf2/expr.c @@ -169,7 +169,7 @@ rw_pieced_value (value *v, value *from, bool check_opti= mized) } =20 ULONGEST bits_to_skip =3D 8 * value_offset (v); - if (value_bitsize (v)) + if (v->bitsize ()) { bits_to_skip +=3D (8 * value_offset (value_parent (v)) + value_bitpos (v)); @@ -179,10 +179,10 @@ rw_pieced_value (value *v, value *from, bool check_op= timized) { /* Use the least significant bits of FROM. */ max_offset =3D 8 * from->type ()->length (); - offset =3D max_offset - value_bitsize (v); + offset =3D max_offset - v->bitsize (); } else - max_offset =3D value_bitsize (v); + max_offset =3D v->bitsize (); } else max_offset =3D 8 * v->type ()->length (); @@ -467,7 +467,7 @@ check_pieced_synthetic_pointer (const value *value, LON= GEST bit_offset, int i; =20 bit_offset +=3D 8 * value_offset (value); - if (value_bitsize (value)) + if (value->bitsize ()) bit_offset +=3D value_bitpos (value); =20 for (i =3D 0; i < c->pieces.size () && bit_length > 0; i++) @@ -513,7 +513,7 @@ indirect_pieced_value (value *value) =20 int bit_length =3D 8 * type->length (); LONGEST bit_offset =3D 8 * value_offset (value); - if (value_bitsize (value)) + if (value->bitsize ()) bit_offset +=3D value_bitpos (value); =20 for (i =3D 0; i < c->pieces.size () && bit_length > 0; i++) diff --git a/gdb/valops.c b/gdb/valops.c index ae876b795d0..2ad19eaf8c7 100644 --- a/gdb/valops.c +++ b/gdb/valops.c @@ -1126,8 +1126,8 @@ value_assign (struct value *toval, struct value *from= val) /* Are we dealing with a bitfield? =20 It is important to mention that `value_parent (toval)' is - non-NULL iff `value_bitsize (toval)' is non-zero. */ - if (value_bitsize (toval)) + non-NULL iff `toval->bitsize ()' is non-zero. */ + if (toval->bitsize ()) { /* VALUE_INTERNALVAR below refers to the parent value, while the offset is relative to this parent value. */ @@ -1138,7 +1138,7 @@ value_assign (struct value *toval, struct value *from= val) set_internalvar_component (VALUE_INTERNALVAR (toval), offset, value_bitpos (toval), - value_bitsize (toval), + toval->bitsize (), fromval); } break; @@ -1150,13 +1150,13 @@ value_assign (struct value *toval, struct value *fr= omval) int changed_len; gdb_byte buffer[sizeof (LONGEST)]; =20 - if (value_bitsize (toval)) + if (toval->bitsize ()) { struct value *parent =3D value_parent (toval); =20 changed_addr =3D value_address (parent) + value_offset (toval); changed_len =3D (value_bitpos (toval) - + value_bitsize (toval) + + toval->bitsize () + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT; =20 @@ -1176,7 +1176,7 @@ value_assign (struct value *toval, struct value *from= val) =20 read_memory (changed_addr, buffer, changed_len); modify_field (type, buffer, value_as_long (fromval), - value_bitpos (toval), value_bitsize (toval)); + value_bitpos (toval), toval->bitsize ()); dest_buffer =3D buffer; } else @@ -1213,7 +1213,7 @@ value_assign (struct value *toval, struct value *from= val) =20 gdbarch =3D get_frame_arch (frame); =20 - if (value_bitsize (toval)) + if (toval->bitsize ()) { struct value *parent =3D value_parent (toval); LONGEST offset =3D value_offset (parent) + value_offset (toval); @@ -1222,7 +1222,7 @@ value_assign (struct value *toval, struct value *from= val) int optim, unavail; =20 changed_len =3D (value_bitpos (toval) - + value_bitsize (toval) + + toval->bitsize () + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT; =20 @@ -1244,7 +1244,7 @@ value_assign (struct value *toval, struct value *from= val) } =20 modify_field (type, buffer, value_as_long (fromval), - value_bitpos (toval), value_bitsize (toval)); + value_bitpos (toval), toval->bitsize ()); =20 put_frame_register_bytes (frame, value_reg, offset, {buffer, changed_len}); @@ -1325,11 +1325,11 @@ value_assign (struct value *toval, struct value *fr= omval) /* If the field does not entirely fill a LONGEST, then zero the sign bits. If the field is signed, and is negative, then sign extend. */ - if ((value_bitsize (toval) > 0) - && (value_bitsize (toval) < 8 * (int) sizeof (LONGEST))) + if ((toval->bitsize () > 0) + && (toval->bitsize () < 8 * (int) sizeof (LONGEST))) { LONGEST fieldval =3D value_as_long (fromval); - LONGEST valmask =3D (((ULONGEST) 1) << value_bitsize (toval)) - 1; + LONGEST valmask =3D (((ULONGEST) 1) << toval->bitsize ()) - 1; =20 fieldval &=3D valmask; if (!type->is_unsigned ()=20 diff --git a/gdb/value.c b/gdb/value.c index 8eb3cb20379..2cdbd7eb93c 100644 --- a/gdb/value.c +++ b/gdb/value.c @@ -1046,17 +1046,6 @@ set_value_bitpos (struct value *value, LONGEST bit) value->m_bitpos =3D bit; } =20 -LONGEST -value_bitsize (const struct value *value) -{ - return value->m_bitsize; -} -void -set_value_bitsize (struct value *value, LONGEST bit) -{ - value->m_bitsize =3D bit; -} - struct value * value_parent (const struct value *value) { @@ -3940,7 +3929,7 @@ value_initialized (const struct value *val) static void value_fetch_lazy_bitfield (struct value *val) { - gdb_assert (value_bitsize (val) !=3D 0); + gdb_assert (val->bitsize () !=3D 0); =20 /* To read a lazy bitfield, read the entire enclosing value. This prevents reading the same block of (possibly volatile) memory once @@ -3952,7 +3941,7 @@ value_fetch_lazy_bitfield (struct value *val) if (value_lazy (parent)) value_fetch_lazy (parent); =20 - unpack_value_bitfield (val, value_bitpos (val), value_bitsize (val), + unpack_value_bitfield (val, value_bitpos (val), val->bitsize (), value_contents_for_printing (parent).data (), value_offset (val), parent); } @@ -4126,7 +4115,7 @@ value_fetch_lazy (struct value *val) { /* Nothing. */ } - else if (value_bitsize (val)) + else if (val->bitsize ()) value_fetch_lazy_bitfield (val); else if (VALUE_LVAL (val) =3D=3D lval_memory) value_fetch_lazy_memory (val); diff --git a/gdb/value.h b/gdb/value.h index 66297e455b9..c18e28e4f7d 100644 --- a/gdb/value.h +++ b/gdb/value.h @@ -173,6 +173,13 @@ struct value /* Return the gdbarch associated with the value. */ struct gdbarch *arch () const; =20 + /* Only used for bitfields; number of bits contained in them. */ + LONGEST bitsize () const + { return m_bitsize; } + + void set_bitsize (LONGEST bit) + { m_bitsize =3D bit; } + =20 /* Type of value; either not an lval, or one of the various different possible kinds of lval. */ @@ -351,11 +358,6 @@ struct value ULONGEST m_limited_length =3D 0; }; =20 -/* Only used for bitfields; number of bits contained in them. */ - -extern LONGEST value_bitsize (const struct value *); -extern void set_value_bitsize (struct value *, LONGEST bit); - /* Only used for bitfields; position of start of field. For little-endian targets, it is the position of the LSB. For big-endian targets, it is the position of the MSB. */