mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2026-08-27 00:26:02 -04:00
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 <aburgess@redhat.com> Approved-By: Simon Marchi <simon.marchi@efficios.com>
This commit is contained in:
parent
4f5935f8ef
commit
65af7b40c6
1 changed files with 13 additions and 20 deletions
|
|
@ -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. */
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue