X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gdb%2Ffindcmd.c;h=1d28914a3400b73eab5946da3c6e19aee24627bf;hb=4ee62156d969867d3d3ffedf656a74643f77279e;hp=a1dfaf3bb2cfe97ce74c7c054cd13d8ad60891c2;hpb=5e1471f57fac8ea99e40cfb4be212e896bac56ff;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/findcmd.c b/gdb/findcmd.c index a1dfaf3bb2..1d28914a34 100644 --- a/gdb/findcmd.c +++ b/gdb/findcmd.c @@ -1,6 +1,6 @@ /* The find command. - Copyright (C) 2008 Free Software Foundation, Inc. + Copyright (C) 2008, 2009 Free Software Foundation, Inc. This file is part of GDB. @@ -18,6 +18,7 @@ along with this program. If not, see . */ #include "defs.h" +#include "arch-utils.h" #include #include "gdb_string.h" #include "gdbcmd.h" @@ -50,7 +51,8 @@ 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, - CORE_ADDR *start_addrp, ULONGEST *search_space_lenp) + CORE_ADDR *start_addrp, ULONGEST *search_space_lenp, + bfd_boolean big_p) { /* Default to using the specified type. */ char size = '\0'; @@ -67,7 +69,6 @@ parse_find_args (char *args, ULONGEST *max_countp, CORE_ADDR start_addr; ULONGEST search_space_len; char *s = args; - bfd_boolean big_p = gdbarch_byte_order (current_gdbarch) == BFD_ENDIAN_BIG; struct cleanup *old_cleanups; struct value *v; @@ -239,6 +240,8 @@ parse_find_args (char *args, ULONGEST *max_countp, static void find_command (char *args, int from_tty) { + struct gdbarch *gdbarch = get_current_arch (); + bfd_boolean big_p = gdbarch_byte_order (gdbarch) == BFD_ENDIAN_BIG; /* Command line parameters. These are initialized to avoid uninitialized warnings from -Wall. */ ULONGEST max_count = 0; @@ -252,7 +255,7 @@ find_command (char *args, int from_tty) struct cleanup *old_cleanups; parse_find_args (args, &max_count, &pattern_buf, &pattern_len, - &start_addr, &search_space_len); + &start_addr, &search_space_len, big_p); old_cleanups = make_cleanup (free_current_contents, &pattern_buf); @@ -273,7 +276,7 @@ find_command (char *args, int from_tty) if (found <= 0) break; - print_address (found_addr, gdb_stdout); + print_address (gdbarch, found_addr, gdb_stdout); printf_filtered ("\n"); ++found_count; last_found_addr = found_addr; @@ -291,14 +294,12 @@ find_command (char *args, int from_tty) /* Record and print the results. */ - set_internalvar (lookup_internalvar ("numfound"), - value_from_longest (builtin_type_int, - (LONGEST) found_count)); + set_internalvar_integer (lookup_internalvar ("numfound"), found_count); if (found_count > 0) { + struct type *ptr_type = builtin_type (gdbarch)->builtin_data_ptr; set_internalvar (lookup_internalvar ("_"), - value_from_pointer (builtin_type_void_data_ptr, - last_found_addr)); + value_from_pointer (ptr_type, last_found_addr)); } if (found_count == 0) @@ -310,6 +311,9 @@ find_command (char *args, int from_tty) do_cleanups (old_cleanups); } +/* Provide a prototype to silence -Wmissing-prototypes. */ +extern initialize_file_ftype _initialize_mem_search; + void _initialize_mem_search (void) {