PR13984 - gdb stops controlling a thread after "Remote 'g' packet reply is too long: ..." error message

Orgad Shaneh
2016-04-10T14:49:33Z

[-- Attachment #1: Type: text/plain, Size: 100 bytes --]

Please review the attached patch. It was inspired by the patch
attached to the bug report.

Thanks.

[-- Attachment #2: 0001-PR13984-gdb-stops-controlling-a-thread.patch --]
[-- Type: application/octet-stream, Size: 1413 bytes --]

From 03ab95933b85dd85c2f4fa5797017e6cee0c8466 Mon Sep 17 00:00:00 2001
From: Orgad Shaneh <orgad.shaneh@audiocodes.com>
Date: Sun, 10 Apr 2016 17:39:24 +0300
Subject: [PATCH] PR13984, gdb stops controlling a thread...

... after "Remote 'g' packet reply is too long: ..." error message

PR13984:
remote.c: Handle long g packets instead of failing
---
gdb/remote.c | 6 +-----
1 file changed, 1 insertion(+), 5 deletions(-)

diff --git a/gdb/remote.c b/gdb/remote.c
index 5c407b6..e8951dc 100644
--- a/gdb/remote.c
+++ b/gdb/remote.c
@@ -7188,10 +7188,6 @@ process_g_packet (struct regcache *regcache)

buf_len = strlen (rs->buf);

- /* Further sanity checks, with knowledge of the architecture. */
- if (buf_len > 2 * rsa->sizeof_g_packet)
- error (_("Remote 'g' packet reply is too long: %s"), rs->buf);
-
/* Save the size of the packet sent to us by the target. It is used
as a heuristic when determining the max size of packets that the
target can safely receive. */
@@ -7202,7 +7198,7 @@ process_g_packet (struct regcache *regcache)
update our records. A 'g' reply that doesn't include a register's
value implies either that the register is not available, or that
the 'p' packet must be used. */
- if (buf_len < 2 * rsa->sizeof_g_packet)
+ if (buf_len != 2 * rsa->sizeof_g_packet)
{
rsa->sizeof_g_packet = buf_len / 2;

--
2.8.0.windows.1