From 51ac8e22655ba777498249ae0c776fd794a2c298 Mon Sep 17 00:00:00 2001 From: Hannes Domani Date: Wed, 22 Apr 2020 19:05:07 +0200 Subject: [PATCH] Fix search of large memory area in gdbserver If the search area is bigger than SEARCH_CHUNK_SIZE (16000), then you get an error in gdbserver: gdb: (gdb) find /w 0x3c43f0,+20000,0x04030201 gdb: Pattern not found. gdbserver: Unable to access 3997 bytes of target memory at 0x3c8273, halting search. The return value of any additional gdb_read_memory calls were compared with the wrong value, this fixes it. gdbserver/ChangeLog: 2020-04-22 Hannes Domani * server.cc (handle_search_memory_1): Fix gdb_read_memory return value comparison. --- gdbserver/ChangeLog | 5 +++++ gdbserver/server.cc | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/gdbserver/ChangeLog b/gdbserver/ChangeLog index 96642e5cf3..f017922d9e 100644 --- a/gdbserver/ChangeLog +++ b/gdbserver/ChangeLog @@ -1,3 +1,8 @@ +2020-04-22 Hannes Domani + + * server.cc (handle_search_memory_1): Fix gdb_read_memory return value + comparison. + 2020-04-16 Tom Tromey * win32-low.cc (windows_nat::handle_access_violation): New diff --git a/gdbserver/server.cc b/gdbserver/server.cc index 77175ff74c..0672f9bc4d 100644 --- a/gdbserver/server.cc +++ b/gdbserver/server.cc @@ -1103,7 +1103,7 @@ handle_search_memory_1 (CORE_ADDR start_addr, CORE_ADDR search_space_len, : chunk_size); if (gdb_read_memory (read_addr, search_buf + keep_len, - nr_to_read) != search_buf_size) + nr_to_read) != nr_to_read) { warning ("Unable to access %ld bytes of target memory " "at 0x%lx, halting search.", -- 2.34.1