[binutils-gdb] Use store_unsigned_integer in findcmd.c
Tom Tromey via Gdb-cvs <[email protected]>
| Newsgroups | gmane.comp.gdb.cvs |
|---|---|
| Message-ID | <[email protected]> |
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=65af7b40c64170b51555eea441c6d9466cd88eda commit 65af7b40c64170b51555eea441c6d9466cd88eda Author: Tom Tromey <[email protected]> Date: Sat Mar 7 09:55:03 2026 -0700 Use store_unsigned_integer in findcmd.c This rewrites findcmd.c:put_bits to use store_unsigned_integer, and to directly use the byte order. Approved-By: Andrew Burgess <[email protected]> Approved-By: Simon Marchi <[email protected]> Diff: --- gdb/findcmd.c | 33 +++++++++++++-------------------- 1 file changed, 13 insertions(+), 20 deletions(-) diff --git a/gdb/findcmd.c b/gdb/findcmd.c index 1372c2ee348..b52c44d48d0 100644 --- a/gdb/findcmd.c +++ b/gdb/findcmd.c @@ -24,27 +24,20 @@ #include "cli/cli-utils.h" #include <algorithm> #include "gdbsupport/byte-vector.h" +#include "extract-store-integer.h" -/* Copied from bfd_put_bits. */ +/* Append DATA to BUF, writing only the specified number of bits, + using the given endian-ness. */ static void -put_bits (uint64_t data, gdb::byte_vector &buf, int bits, bool big_p) +put_bits (uint64_t data, gdb::byte_vector &buf, int bits, + bfd_endian byte_order) { - int i; - int bytes; - gdb_assert (bits % 8 == 0); - - bytes = bits / 8; + int bytes = bits / 8; size_t last = buf.size (); buf.resize (last + bytes); - for (i = 0; i < bytes; i++) - { - int index = big_p ? bytes - i - 1 : i; - - buf[last + index] = data & 0xff; - data >>= 8; - } + store_unsigned_integer (&buf[last], bytes, byte_order, data); } /* Subroutine of find_command to simplify it. @@ -53,7 +46,7 @@ put_bits (uint64_t data, gdb::byte_vector &buf, int bits, bool big_p) static gdb::byte_vector parse_find_args (const char *args, ULONGEST *max_countp, CORE_ADDR *start_addrp, ULONGEST *search_space_lenp, - bool big_p) + bfd_endian byte_order) { /* Default to using the specified type. */ char size = '\0'; @@ -171,13 +164,13 @@ parse_find_args (const char *args, ULONGEST *max_countp, pattern_buf.push_back (x); break; case 'h': - put_bits (x, pattern_buf, 16, big_p); + put_bits (x, pattern_buf, 16, byte_order); break; case 'w': - put_bits (x, pattern_buf, 32, big_p); + put_bits (x, pattern_buf, 32, byte_order); break; case 'g': - put_bits (x, pattern_buf, 64, big_p); + put_bits (x, pattern_buf, 64, byte_order); break; } } @@ -210,7 +203,7 @@ static void find_command (const char *args, int from_tty) { struct gdbarch *gdbarch = get_current_arch (); - bool big_p = gdbarch_byte_order (gdbarch) == BFD_ENDIAN_BIG; + bfd_endian byte_order = gdbarch_byte_order (gdbarch); /* Command line parameters. These are initialized to avoid uninitialized warnings from -Wall. */ ULONGEST max_count = 0; @@ -223,7 +216,7 @@ find_command (const char *args, int from_tty) gdb::byte_vector pattern_buf = parse_find_args (args, &max_count, &start_addr, &search_space_len, - big_p); + byte_order); /* Perform the search. */