diff options
author | Joel Sherrill <joel.sherrill@OARcorp.com> | 2003-07-17 21:59:42 +0000 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@OARcorp.com> | 2003-07-17 21:59:42 +0000 |
commit | 45477a3a0e8b269d4f2af52ed6c3bda6cea3cd49 (patch) | |
tree | 57d1f67015c4010b4520a69df5b8b19c5e320096 /c | |
parent | 2003-07-16 Joel Sherrill <joel@OARcorp.com> (diff) | |
download | rtems-45477a3a0e8b269d4f2af52ed6c3bda6cea3cd49.tar.bz2 |
2003-07-17 Joel Sherrill <joel@OARcorp.com>
PR 433/tools
* mips-stub.c: Patch from C. M. Heard <heard@pobox.com> described as:
The purpose of the patch is to make the stub ignore all
characters except '+' (ack) or '-' (nak) when it has transmitted a
packet and expects an acknowledgment. Without the patch,
putpacket() will retransmit each time it receives anything other
than '+' when expecting an ack, and that, bitter experience has
found, frequently results in the stub failing to sync up when
initially attaching to gdb.
I think that rtems users will notice significant improvement in
the of the mips stub if this patch is incorporated in the
distribution; certainly I did in my stand-aline environment. I
should hasten to add that it is only an improvement and not a 100%
cure for synchronization problems because '+' characters can (and
do) during as message data, and it's still possible for these to
be mistaken as acks. I have no idea how to fix that short of
redesigning the gdb-remote protocol.
Diffstat (limited to 'c')
-rw-r--r-- | c/src/lib/libbsp/mips/shared/gdbstub/ChangeLog | 22 | ||||
-rw-r--r-- | c/src/lib/libbsp/mips/shared/gdbstub/mips-stub.c | 20 |
2 files changed, 41 insertions, 1 deletions
diff --git a/c/src/lib/libbsp/mips/shared/gdbstub/ChangeLog b/c/src/lib/libbsp/mips/shared/gdbstub/ChangeLog index b870b2a58a..8a034fb7d4 100644 --- a/c/src/lib/libbsp/mips/shared/gdbstub/ChangeLog +++ b/c/src/lib/libbsp/mips/shared/gdbstub/ChangeLog @@ -1,3 +1,25 @@ +2003-07-17 Joel Sherrill <joel@OARcorp.com> + + PR 433/tools + * mips-stub.c: Patch from C. M. Heard <heard@pobox.com> described as: + + The purpose of the patch is to make the stub ignore all + characters except '+' (ack) or '-' (nak) when it has transmitted a + packet and expects an acknowledgment. Without the patch, + putpacket() will retransmit each time it receives anything other + than '+' when expecting an ack, and that, bitter experience has + found, frequently results in the stub failing to sync up when + initially attaching to gdb. + + I think that rtems users will notice significant improvement in + the of the mips stub if this patch is incorporated in the + distribution; certainly I did in my stand-aline environment. I + should hasten to add that it is only an improvement and not a 100% + cure for synchronization problems because '+' characters can (and + do) during as message data, and it's still possible for these to + be mistaken as acks. I have no idea how to fix that short of + redesigning the gdb-remote protocol. + 2002-11-01 Joel Sherrill <joel@OARcorp.com> * mips-stub.c: Removed warnings. diff --git a/c/src/lib/libbsp/mips/shared/gdbstub/mips-stub.c b/c/src/lib/libbsp/mips/shared/gdbstub/mips-stub.c index d0ef76228b..a3ce56ade3 100644 --- a/c/src/lib/libbsp/mips/shared/gdbstub/mips-stub.c +++ b/c/src/lib/libbsp/mips/shared/gdbstub/mips-stub.c @@ -599,6 +599,24 @@ getpacket (char *buffer) /* + * Get a positive/negative acknowledgment for a transmitted packet. + */ +static char +getAck (void) +{ + char c; + + do + { + c = getDebugChar (); + } + while ((c != '+') && (c != '-')); + + return c; +} + + +/* * Send the packet in buffer and wait for a positive acknowledgement. */ static void @@ -644,7 +662,7 @@ putpacket (char *buffer) putDebugChar (highhex (checksum)); putDebugChar (lowhex (checksum)); } - while (getDebugChar () != '+'); + while (getAck () != '+'); } |