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:
Joel Sherrill
2003-07-17 21:59:00 +00:00
parent 4c29889520
commit c4abc88385
2 changed files with 41 additions and 1 deletions

View File

@@ -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.

View File

@@ -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 () != '+');
}