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; |