Perform small writes before sending OK. 03/3803/2
authorTim Newsome <tim@sifive.com>
Wed, 5 Oct 2016 14:57:38 +0000 (07:57 -0700)
committerAndreas Fritiofson <andreas.fritiofson@gmail.com>
Sun, 30 Oct 2016 20:40:56 +0000 (20:40 +0000)
commit19df456a79c912b9e2162ef05c1fd0c02ec7b14a
tree00b835043c1a18f0cf88adb9d38844ccb2a24b28
parent4b50872ffe1375c57bc82122dc76ed0324ab91ef
Perform small writes before sending OK.

To speed up downloads, OpenOCD sends gdb OK when a write is received,
even before the write has actually occurred. The failure is then
returned for the next write. That leads to the following confusing
behavior:
```
(gdb) p/x *((int*)0xdeadbeef)=8675309
$2 = 0x845fed
(gdb) p/x *((int*)0x80000000)=6874742
Cannot access memory at address 0x80000000
```
While it's actually the first write that failed.

This change hacks around this problem by not sending OK for small writes
(len<8) until the write has actually occurred. This does not impact
download speed, since during downloads (almost) all writes will have
much larger length.

Change-Id: I1f8b9bb19b0707487f840df6871e372e4ba228dd
Signed-off-by: Tim Newsome <tim@sifive.com>
Reviewed-on: http://openocd.zylin.com/3803
Tested-by: jenkins
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
src/server/gdb_server.c