| Index: gdb/findcmd.c
|
| diff --git a/gdb/findcmd.c b/gdb/findcmd.c
|
| index 68184aa27e981cc0e675fa33e560ea0127071eb9..10c246b5ef444f71b5dafc89ec1b20da2fb4c14d 100644
|
| --- a/gdb/findcmd.c
|
| +++ b/gdb/findcmd.c
|
| @@ -1,6 +1,6 @@
|
| /* The find command.
|
|
|
| - Copyright (C) 2008-2012 Free Software Foundation, Inc.
|
| + Copyright (C) 2008-2013 Free Software Foundation, Inc.
|
|
|
| This file is part of GDB.
|
|
|
| @@ -20,15 +20,16 @@
|
| #include "defs.h"
|
| #include "arch-utils.h"
|
| #include <ctype.h>
|
| -#include "gdb_string.h"
|
| +#include <string.h>
|
| #include "gdbcmd.h"
|
| #include "value.h"
|
| #include "target.h"
|
| +#include "cli/cli-utils.h"
|
|
|
| /* Copied from bfd_put_bits. */
|
|
|
| static void
|
| -put_bits (bfd_uint64_t data, char *buf, int bits, bfd_boolean big_p)
|
| +put_bits (bfd_uint64_t data, gdb_byte *buf, int bits, bfd_boolean big_p)
|
| {
|
| int i;
|
| int bytes;
|
| @@ -50,7 +51,7 @@ put_bits (bfd_uint64_t data, char *buf, int bits, bfd_boolean big_p)
|
|
|
| static void
|
| parse_find_args (char *args, ULONGEST *max_countp,
|
| - char **pattern_bufp, ULONGEST *pattern_lenp,
|
| + gdb_byte **pattern_bufp, ULONGEST *pattern_lenp,
|
| CORE_ADDR *start_addrp, ULONGEST *search_space_lenp,
|
| bfd_boolean big_p)
|
| {
|
| @@ -58,17 +59,17 @@ parse_find_args (char *args, ULONGEST *max_countp,
|
| char size = '\0';
|
| ULONGEST max_count = ~(ULONGEST) 0;
|
| /* Buffer to hold the search pattern. */
|
| - char *pattern_buf;
|
| + gdb_byte *pattern_buf;
|
| /* Current size of search pattern buffer.
|
| We realloc space as needed. */
|
| #define INITIAL_PATTERN_BUF_SIZE 100
|
| ULONGEST pattern_buf_size = INITIAL_PATTERN_BUF_SIZE;
|
| /* Pointer to one past the last in-use part of pattern_buf. */
|
| - char *pattern_buf_end;
|
| + gdb_byte *pattern_buf_end;
|
| ULONGEST pattern_len;
|
| CORE_ADDR start_addr;
|
| ULONGEST search_space_len;
|
| - char *s = args;
|
| + const char *s = args;
|
| struct cleanup *old_cleanups;
|
| struct value *v;
|
|
|
| @@ -109,8 +110,7 @@ parse_find_args (char *args, ULONGEST *max_countp,
|
| }
|
| }
|
|
|
| - while (isspace (*s))
|
| - ++s;
|
| + s = skip_spaces_const (s);
|
| }
|
|
|
| /* Get the search range. */
|
| @@ -120,8 +120,7 @@ parse_find_args (char *args, ULONGEST *max_countp,
|
|
|
| if (*s == ',')
|
| ++s;
|
| - while (isspace (*s))
|
| - ++s;
|
| + s = skip_spaces_const (s);
|
|
|
| if (*s == '+')
|
| {
|
| @@ -169,19 +168,18 @@ parse_find_args (char *args, ULONGEST *max_countp,
|
| while (*s != '\0')
|
| {
|
| LONGEST x;
|
| - int val_bytes;
|
| + struct type *t;
|
| ULONGEST pattern_buf_size_need;
|
|
|
| - while (isspace (*s))
|
| - ++s;
|
| + s = skip_spaces_const (s);
|
|
|
| v = parse_to_comma_and_eval (&s);
|
| - val_bytes = TYPE_LENGTH (value_type (v));
|
| + t = value_type (v);
|
|
|
| /* Keep it simple and assume size == 'g' when watching for when we
|
| need to grow the pattern buf. */
|
| pattern_buf_size_need = (pattern_buf_end - pattern_buf
|
| - + max (val_bytes, sizeof (int64_t)));
|
| + + max (TYPE_LENGTH (t), sizeof (int64_t)));
|
| if (pattern_buf_size_need > pattern_buf_size)
|
| {
|
| size_t current_offset = pattern_buf_end - pattern_buf;
|
| @@ -215,14 +213,13 @@ parse_find_args (char *args, ULONGEST *max_countp,
|
| }
|
| else
|
| {
|
| - memcpy (pattern_buf_end, value_contents (v), val_bytes);
|
| - pattern_buf_end += val_bytes;
|
| + memcpy (pattern_buf_end, value_contents (v), TYPE_LENGTH (t));
|
| + pattern_buf_end += TYPE_LENGTH (t);
|
| }
|
|
|
| if (*s == ',')
|
| ++s;
|
| - while (isspace (*s))
|
| - ++s;
|
| + s = skip_spaces_const (s);
|
| }
|
|
|
| if (pattern_buf_end == pattern_buf)
|
| @@ -252,7 +249,7 @@ find_command (char *args, int from_tty)
|
| /* Command line parameters.
|
| These are initialized to avoid uninitialized warnings from -Wall. */
|
| ULONGEST max_count = 0;
|
| - char *pattern_buf = 0;
|
| + gdb_byte *pattern_buf = 0;
|
| ULONGEST pattern_len = 0;
|
| CORE_ADDR start_addr = 0;
|
| ULONGEST search_space_len = 0;
|
|
|