* remote.c (read_frame): Calculate run length encoded checksum correctly.
authorSteve Chamberlain <sac@cygnus>
Fri, 5 Aug 1994 00:14:05 +0000 (00:14 +0000)
committerSteve Chamberlain <sac@cygnus>
Fri, 5 Aug 1994 00:14:05 +0000 (00:14 +0000)
  * config/sh/stub.c: New file.

gdb/ChangeLog
gdb/remote.c

index 4712bb564ca8d47ea9eb6610e0187b7b140f62f0..cdffbb87d5d17a3d506ee9e0ca0e721c5984d2ee 100644 (file)
@@ -1,3 +1,8 @@
+Thu Aug  4 16:26:06 1994  Steve Chamberlain  (sac@jonny.cygnus.com)
+
+       * remote.c (read_frame): Calculate run length encoded checksum correctly.
+       * config/sh/stub.c: New file.
+
 Thu Aug  4 14:34:12 1994  Stu Grossman  (grossman@cygnus.com)
 
        * target.c (find_default_run_target):  Make sure to_can_run is set
index a6ea4242b5f9145e518d0aa1e5cb05473e29765f..8debf22b170c29fecbebc4daff2a3d48f6f8eda2 100644 (file)
@@ -126,10 +126,13 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
                                        remote target.
 
        Responses can be run-length encoded to save space.  A '*' means that
-       the next two characters are hex digits giving a repeat count which
+       the next character is an ASCII encoding giving a repeat count which
        stands for that many repititions of the character preceding the '*'.
-       Note that this means that responses cannot contain '*'.  Example:
-       "0*03" means the same as "0000".  */
+       The encoding is n+29, yielding a printable character where n >=3 
+       (which is where rle starts to win).  Don't use an n > 126.
+
+       So 
+       "0* " means the same as "0000".  */
 
 #include "defs.h"
 #include <string.h>
@@ -1254,6 +1257,7 @@ read_frame (buf)
            return 0;
          }
        case '*':               /* Run length encoding */
+         csum += c;
          c = readchar (remote_timeout);
          csum += c;
          c = c - ' ' + 3;      /* Compute repeat count */
@@ -1269,8 +1273,8 @@ read_frame (buf)
          printf_filtered ("Repeat count %d too large for buffer: ", c);
          puts_filtered (buf);
          puts_filtered ("\n");
-
          return 0;
+
        default:
          if (bp < buf + PBUFSIZ - 1)
            {