From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 2126) id D93033858D37; Mon, 13 Feb 2023 22:27:59 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org D93033858D37 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1676327279; bh=e4C/E4Q91NJuaK+4Mt3eRMQqk2+m0DrWdusDdGVMOEc=; h=From:To:Subject:Date:From; b=QH1Z+HZ4qJv8dxbr4KsWqQ1B/Xk62TBCxrZeHNJExcRSnYmnY9ybTVTeHV+56Mw2r LW4sm9UKhZoGgLIRYTq53KV1QbE/aHt0MBW7cEp2DGOPgb0aCl5t7JACc6dXpBIyCs LFqp6Mq94qiWVOt/0EVKuuBlzZaJGUghQAX8+rTE= 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_bitpos into method X-Act-Checkin: binutils-gdb X-Git-Author: Tom Tromey X-Git-Refname: refs/heads/master X-Git-Oldrev: f49d5fa263e834a4cf171f43a450ac5b1ae5ae30 X-Git-Newrev: 5011c493fb54235b47fbd76e9734072995d93da8 Message-Id: <20230213222759.D93033858D37@sourceware.org> Date: Mon, 13 Feb 2023 22:27:59 +0000 (GMT) List-Id: https://sourceware.org/git/gitweb.cgi?p=3Dbinutils-gdb.git;h=3D5011c493fb54= 235b47fbd76e9734072995d93da8 commit 5011c493fb54235b47fbd76e9734072995d93da8 Author: Tom Tromey Date: Tue Jan 31 09:44:47 2023 -0700 Turn value_bitpos into method =20 This changes value_bitpos to be a method of value. Much of this patch was written by script. =20 Approved-By: Simon Marchi Diff: --- gdb/ada-lang.c | 20 ++++++++++---------- gdb/breakpoint.c | 4 ++-- gdb/dwarf2/expr.c | 6 +++--- gdb/valops.c | 10 +++++----- gdb/value.c | 13 +------------ gdb/value.h | 16 +++++++++------- 6 files changed, 30 insertions(+), 39 deletions(-) diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c index 9cbbbb06db3..d1ad9a28ca7 100644 --- a/gdb/ada-lang.c +++ b/gdb/ada-lang.c @@ -569,7 +569,7 @@ coerce_unspec_val_to_type (struct value *val, struct ty= pe *type) } set_value_component_location (result, val); result->set_bitsize (val->bitsize ()); - set_value_bitpos (result, value_bitpos (val)); + result->set_bitpos (val->bitpos ()); if (VALUE_LVAL (result) =3D=3D lval_memory) set_value_address (result, value_address (val)); return result; @@ -2831,12 +2831,12 @@ ada_value_primitive_packed_val (struct value *obj, = const gdb_byte *valaddr, long new_offset =3D offset; =20 set_value_component_location (v, obj); - set_value_bitpos (v, bit_offset + value_bitpos (obj)); + v->set_bitpos (bit_offset + obj->bitpos ()); v->set_bitsize (bit_size); - if (value_bitpos (v) >=3D HOST_CHAR_BIT) + if (v->bitpos () >=3D HOST_CHAR_BIT) { ++new_offset; - set_value_bitpos (v, value_bitpos (v) - HOST_CHAR_BIT); + v->set_bitpos (v->bitpos () - HOST_CHAR_BIT); } set_value_offset (v, new_offset); =20 @@ -2896,7 +2896,7 @@ ada_value_assign (struct value *toval, struct value *= fromval) && (type->code () =3D=3D TYPE_CODE_FLT || type->code () =3D=3D TYPE_CODE_STRUCT)) { - int len =3D (value_bitpos (toval) + int len =3D (toval->bitpos () + bits + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT; int from_size; gdb_byte *buffer =3D (gdb_byte *) alloca (len); @@ -2915,7 +2915,7 @@ ada_value_assign (struct value *toval, struct value *= fromval) ULONGEST from_offset =3D 0; if (is_big_endian && is_scalar_type (fromval->type ())) from_offset =3D from_size - bits; - copy_bitwise (buffer, value_bitpos (toval), + copy_bitwise (buffer, toval->bitpos (), value_contents (fromval).data (), from_offset, bits, is_big_endian); write_memory_with_notification (to_addr, buffer, len); @@ -2951,7 +2951,7 @@ value_assign_to_component (struct value *container, s= truct value *component, LONGEST offset_in_container =3D (LONGEST) (value_address (component) - value_address (container)); int bit_offset_in_container =3D - value_bitpos (component) - value_bitpos (container); + component->bitpos () - container->bitpos (); int bits; =20 val =3D value_cast (component->type (), val); @@ -2972,13 +2972,13 @@ value_assign_to_component (struct value *container,= struct value *component, src_offset =3D 0; copy_bitwise ((value_contents_writeable (container).data () + offset_in_container), - value_bitpos (container) + bit_offset_in_container, + container->bitpos () + bit_offset_in_container, value_contents (val).data (), src_offset, bits, 1); } else copy_bitwise ((value_contents_writeable (container).data () + offset_in_container), - value_bitpos (container) + bit_offset_in_container, + container->bitpos () + bit_offset_in_container, value_contents (val).data (), 0, bits, 0); } =20 @@ -6918,7 +6918,7 @@ ada_value_primitive_field (struct value *arg1, int of= fset, int fieldno, /* Handle packed fields. It might be that the field is not packed relative to its containing structure, but the structure itself is packed; in this case we must take the bit-field path. */ - if (TYPE_FIELD_BITSIZE (arg_type, fieldno) !=3D 0 || value_bitpos (arg1)= !=3D 0) + if (TYPE_FIELD_BITSIZE (arg_type, fieldno) !=3D 0 || arg1->bitpos () != =3D 0) { int bit_pos =3D arg_type->field (fieldno).loc_bitpos (); int bit_size =3D TYPE_FIELD_BITSIZE (arg_type, fieldno); diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c index 7245e8b5b43..24697691421 100644 --- a/gdb/breakpoint.c +++ b/gdb/breakpoint.c @@ -2096,7 +2096,7 @@ update_watchpoint (struct watchpoint *b, bool reparse) { /* Extract the bit parameters out from the bitfield sub-expression. */ - bitpos =3D value_bitpos (v); + bitpos =3D v->bitpos (); bitsize =3D v->bitsize (); } else if (v =3D=3D result && b->val_bitsize !=3D 0) @@ -10198,7 +10198,7 @@ watch_command_1 (const char *arg, int accessflag, i= nt from_tty, =20 if (val_as_value !=3D NULL && just_location) { - saved_bitpos =3D value_bitpos (val_as_value); + saved_bitpos =3D val_as_value->bitpos (); saved_bitsize =3D val_as_value->bitsize (); } =20 diff --git a/gdb/dwarf2/expr.c b/gdb/dwarf2/expr.c index cbc20509cbe..826573b628d 100644 --- a/gdb/dwarf2/expr.c +++ b/gdb/dwarf2/expr.c @@ -172,7 +172,7 @@ rw_pieced_value (value *v, value *from, bool check_opti= mized) if (v->bitsize ()) { bits_to_skip +=3D (8 * value_offset (value_parent (v)) - + value_bitpos (v)); + + v->bitpos ()); if (from !=3D nullptr && (type_byte_order (from->type ()) =3D=3D BFD_ENDIAN_BIG)) @@ -468,7 +468,7 @@ check_pieced_synthetic_pointer (const value *value, LON= GEST bit_offset, =20 bit_offset +=3D 8 * value_offset (value); if (value->bitsize ()) - bit_offset +=3D value_bitpos (value); + bit_offset +=3D value->bitpos (); =20 for (i =3D 0; i < c->pieces.size () && bit_length > 0; i++) { @@ -514,7 +514,7 @@ indirect_pieced_value (value *value) int bit_length =3D 8 * type->length (); LONGEST bit_offset =3D 8 * value_offset (value); if (value->bitsize ()) - bit_offset +=3D value_bitpos (value); + bit_offset +=3D value->bitpos (); =20 for (i =3D 0; i < c->pieces.size () && bit_length > 0; i++) { diff --git a/gdb/valops.c b/gdb/valops.c index 2ad19eaf8c7..45356919185 100644 --- a/gdb/valops.c +++ b/gdb/valops.c @@ -1137,7 +1137,7 @@ value_assign (struct value *toval, struct value *from= val) =20 set_internalvar_component (VALUE_INTERNALVAR (toval), offset, - value_bitpos (toval), + toval->bitpos (), toval->bitsize (), fromval); } @@ -1155,7 +1155,7 @@ value_assign (struct value *toval, struct value *from= val) struct value *parent =3D value_parent (toval); =20 changed_addr =3D value_address (parent) + value_offset (toval); - changed_len =3D (value_bitpos (toval) + changed_len =3D (toval->bitpos () + toval->bitsize () + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT; @@ -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), toval->bitsize ()); + toval->bitpos (), toval->bitsize ()); dest_buffer =3D buffer; } else @@ -1221,7 +1221,7 @@ value_assign (struct value *toval, struct value *from= val) gdb_byte buffer[sizeof (LONGEST)]; int optim, unavail; =20 - changed_len =3D (value_bitpos (toval) + changed_len =3D (toval->bitpos () + toval->bitsize () + HOST_CHAR_BIT - 1) / HOST_CHAR_BIT; @@ -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), toval->bitsize ()); + toval->bitpos (), toval->bitsize ()); =20 put_frame_register_bytes (frame, value_reg, offset, {buffer, changed_len}); diff --git a/gdb/value.c b/gdb/value.c index 2cdbd7eb93c..a51f5ad7773 100644 --- a/gdb/value.c +++ b/gdb/value.c @@ -1035,17 +1035,6 @@ set_value_offset (struct value *value, LONGEST offse= t) value->m_offset =3D offset; } =20 -LONGEST -value_bitpos (const struct value *value) -{ - return value->m_bitpos; -} -void -set_value_bitpos (struct value *value, LONGEST bit) -{ - value->m_bitpos =3D bit; -} - struct value * value_parent (const struct value *value) { @@ -3941,7 +3930,7 @@ value_fetch_lazy_bitfield (struct value *val) if (value_lazy (parent)) value_fetch_lazy (parent); =20 - unpack_value_bitfield (val, value_bitpos (val), val->bitsize (), + unpack_value_bitfield (val, val->bitpos (), val->bitsize (), value_contents_for_printing (parent).data (), value_offset (val), parent); } diff --git a/gdb/value.h b/gdb/value.h index c18e28e4f7d..7249cdcb5c0 100644 --- a/gdb/value.h +++ b/gdb/value.h @@ -180,6 +180,15 @@ struct value void set_bitsize (LONGEST bit) { m_bitsize =3D bit; } =20 + /* 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. */ + LONGEST bitpos () const + { return m_bitpos; } + + void set_bitpos (LONGEST bit) + { m_bitpos =3D bit; } + =20 /* Type of value; either not an lval, or one of the various different possible kinds of lval. */ @@ -358,13 +367,6 @@ struct value ULONGEST m_limited_length =3D 0; }; =20 -/* 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. */ - -extern LONGEST value_bitpos (const struct value *); -extern void set_value_bitpos (struct value *, LONGEST bit); - /* Only used for bitfields; the containing value. This allows a single read from the target when displaying multiple bitfields. */