2005-02-09 Nathan Sidwell * remote.c (remote_fetch_registers): Allow uppercase hex when resyncing. (remote_write_bytes): Robustify packet size calculation for very small packets. Index: remote.c =================================================================== RCS file: /cvs/src/src/gdb/remote.c,v retrieving revision 1.163 diff -c -3 -p -r1.163 remote.c *** remote.c 19 Jan 2005 21:15:44 -0000 1.163 --- remote.c 9 Feb 2005 11:09:39 -0000 *************** remote_fetch_registers (int regnum) *** 3307,3312 **** --- 3307,3313 ---- in the buffer is not a hex character, assume that has happened and try to fetch another packet to read. */ while ((buf[0] < '0' || buf[0] > '9') + && (buf[0] < 'A' || buf[0] > 'F') && (buf[0] < 'a' || buf[0] > 'f') && buf[0] != 'x') /* New: unavailable register value. */ { *************** remote_write_bytes (CORE_ADDR memaddr, c *** 3640,3649 **** buf = alloca (sizeof_buf); /* Compute the size of the actual payload by subtracting out the ! packet header and footer overhead: "$M,:...#nn". */ ! payload_size = (get_memory_write_packet_size () - (strlen ("$M,:#NN") ! + hexnumlen (memaddr) ! + hexnumlen (len))); /* Construct the packet header: "[MX],:". */ --- 3641,3651 ---- buf = alloca (sizeof_buf); /* Compute the size of the actual payload by subtracting out the ! packet header and footer overhead: "$M,:...#nn". ! */ ! payload_size = get_memory_write_packet_size (); ! payload_size -= strlen ("$M,:#NN"); ! payload_size -= hexnumlen (memaddr); /* Construct the packet header: "[MX],:". */ *************** remote_write_bytes (CORE_ADDR memaddr, c *** 3656,3666 **** --- 3658,3673 ---- *p++ = 'X'; /* Best guess at number of bytes that will fit. */ todo = min (len, payload_size); + payload_size -= hexnumlen (todo); + todo = min (todo, payload_size); break; case PACKET_DISABLE: *p++ = 'M'; /* Num bytes that will fit. */ todo = min (len, payload_size / 2); + payload_size -= hexnumlen (todo); + todo = min (todo, payload_size / 2); + todo = max (todo, 1); break; case PACKET_SUPPORT_UNKNOWN: internal_error (__FILE__, __LINE__,