From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1879) id 11ADF385803B; Thu, 14 Dec 2023 16:20:46 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 11ADF385803B DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1702570846; bh=PebZcTtfXpaapZiF/RVHFZDoVA/s8dAPZINkwWLSlnM=; h=From:To:Subject:Date:From; b=ZLl+9I4Pg0ADSHp2sgPhy3xIaJYl3axoP5i+wps9tgUUMHLU4+zbGzIj1OAxYSN6C /ZSc1zKbT+mGYcEQoOH76GlbTrONXli/NWpm46MfmW2VpRNgBSDsSxiMFqBKaG2B1a hWGQyF+5hBEWV6pMxFNvsXnUyuE/uQ/4glEX07b8= Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable From: Simon Marchi To: gdb-cvs@sourceware.org Subject: [binutils-gdb] gdb: make store_integer take an array_view X-Act-Checkin: binutils-gdb X-Git-Author: Simon Marchi X-Git-Refname: refs/heads/master X-Git-Oldrev: e4e20d45110d919a5a2da2db84806f315ab59d90 X-Git-Newrev: f06b75776428f524d91d860aecbbe2734cf5580c Message-Id: <20231214162046.11ADF385803B@sourceware.org> Date: Thu, 14 Dec 2023 16:20:46 +0000 (GMT) List-Id: https://sourceware.org/git/gitweb.cgi?p=3Dbinutils-gdb.git;h=3Df06b75776428= f524d91d860aecbbe2734cf5580c commit f06b75776428f524d91d860aecbbe2734cf5580c Author: Simon Marchi Date: Fri Dec 1 11:27:16 2023 -0500 gdb: make store_integer take an array_view =20 Change store_integer, store_signed_integer and store_unsigned_integer to accept an array_view. Add some backwards compatibility overloads to avoid changing all callers at once. =20 Change-Id: Ibb1381228ab1cb65fc7e2e4b92cf9ab1047cdc03 Reviewed-By: John Baldwin Diff: --- gdb/defs.h | 39 +++++++++++++++++++++++++++++++-------- gdb/findvar.c | 16 +++++++--------- 2 files changed, 38 insertions(+), 17 deletions(-) diff --git a/gdb/defs.h b/gdb/defs.h index bcce4f4c3e4..e20143b8146 100644 --- a/gdb/defs.h +++ b/gdb/defs.h @@ -495,21 +495,44 @@ extern CORE_ADDR extract_typed_address (const gdb_byt= e *buf, target-format integer at ADDR which is LEN bytes long. */ =20 template> -extern void store_integer (gdb_byte *addr, int len, enum bfd_endian byte_o= rder, - T val); +extern void store_integer (gdb::array_view dst, + bfd_endian byte_order, T val); + +template +static inline void +store_integer (gdb_byte *addr, int len, bfd_endian byte_order, T val) +{ + return store_integer (gdb::make_array_view (addr, len), byte_order, val); +} + +static inline void +store_signed_integer (gdb::array_view dst, bfd_endian byte_order, + LONGEST val) +{ + return store_integer (dst, byte_order, val); +} + +static inline void +store_signed_integer (gdb_byte *addr, int len, bfd_endian byte_order, + LONGEST val) +{ + return store_signed_integer (gdb::make_array_view (addr, len), byte_orde= r, + val); +} =20 static inline void -store_signed_integer (gdb_byte *addr, int len, - enum bfd_endian byte_order, LONGEST val) +store_unsigned_integer (gdb::array_view dst, bfd_endian byte_ord= er, + ULONGEST val) { - return store_integer (addr, len, byte_order, val); + return store_integer (dst, byte_order, val); } =20 static inline void -store_unsigned_integer (gdb_byte *addr, int len, - enum bfd_endian byte_order, ULONGEST val) +store_unsigned_integer (gdb_byte *addr, int len, bfd_endian byte_order, + ULONGEST val) { - return store_integer (addr, len, byte_order, val); + return store_unsigned_integer (gdb::make_array_view (addr, len), byte_or= der, + val); } =20 extern void store_typed_address (gdb_byte *buf, struct type *type, diff --git a/gdb/findvar.c b/gdb/findvar.c index 02b4a12970b..8f016f5756b 100644 --- a/gdb/findvar.c +++ b/gdb/findvar.c @@ -159,12 +159,12 @@ extract_typed_address (const gdb_byte *buf, struct ty= pe *type) target-format integer at ADDR which is LEN bytes long. */ template void -store_integer (gdb_byte *addr, int len, enum bfd_endian byte_order, +store_integer (gdb::array_view dst, enum bfd_endian byte_order, T val) { gdb_byte *p; - gdb_byte *startaddr =3D addr; - gdb_byte *endaddr =3D startaddr + len; + gdb_byte *startaddr =3D dst.data (); + gdb_byte *endaddr =3D startaddr + dst.size (); =20 /* Start at the least significant end of the integer, and work towards the most significant. */ @@ -187,13 +187,11 @@ store_integer (gdb_byte *addr, int len, enum bfd_endi= an byte_order, } =20 /* Explicit instantiations. */ -template void store_integer (gdb_byte *addr, int len, - enum bfd_endian byte_order, - LONGEST val); +template void store_integer (gdb::array_view dst, + bfd_endian byte_order, LONGEST val); =20 -template void store_integer (gdb_byte *addr, int len, - enum bfd_endian byte_order, - ULONGEST val); +template void store_integer (gdb::array_view dst, + bfd_endian byte_order, ULONGEST val); =20 /* Store the address ADDR as a pointer of type TYPE at BUF, in target form. */