Fix 'xfered>0' assertion in target.c for remote connection
authorPaul Carroll <pcarroll@codesourcery.com>
Tue, 14 Nov 2017 22:37:37 +0000 (17:37 -0500)
committerSimon Marchi <simon.marchi@ericsson.com>
Tue, 14 Nov 2017 22:39:24 +0000 (17:39 -0500)
commit92ffd475192030a46a6046177c732372b4dadad5
tree5a54e835952f5f6902cb4e0bdd6e8b9fbc8848c3
parent074319087452e3a8b1a0e84279a82555dd798d69
Fix 'xfered>0' assertion in target.c for remote connection

We have a customer who is using a Corelis gdb server to connect to gdb.
Occasionally, the gdb server will send a 0-byte block of memory for a
read.  When this happens, gdb gives an assertion from target.c:

internal-error: target_xfer_partial: Assertion `*xfered_len > 0' failed.

This problem is almost identical to that fixed in
https://sourceware.org/ml/gdb-patches/2014-02/msg00636.html

In this case, remote.c needs to be modified to return TARGET_XFER_EOF
instead of TARGET_XFER_OK or TARGET_XFER_UNAVAILABLE when 0 bytes are
transferred.

gdb/ChangeLog:

PR gdb/22388
* remote.c (remote_write_bytes_aux, remote_read_bytes_1,
remote_read_bytes, remote_write_qxfer, remote_xfer_partial):
Return TARGET_XFER_EOF if size of returned data is 0.
gdb/ChangeLog
gdb/remote.c