forked from Imagelibrary/rtems
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.
This commit is contained in:
@@ -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.
|
||||
|
||||
@@ -598,6 +598,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.
|
||||
*/
|
||||
@@ -644,7 +662,7 @@ putpacket (char *buffer)
|
||||
putDebugChar (highhex (checksum));
|
||||
putDebugChar (lowhex (checksum));
|
||||
}
|
||||
while (getDebugChar () != '+');
|
||||
while (getAck () != '+');
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user