ARM semihosting: fix EOF handling with SYS_READ

The semihosting interface has a strange convention for read/write where
the unused amount of buffer must be returned.  We failed to return the
total buffer size when the local read() call returned 0.

Signed-off-by: Nicolas Pitre <nico@marvell.com>
This commit is contained in:
Nicolas Pitre 2010-02-02 00:05:42 -05:00
parent bef37ceba2
commit 3d2d5dcc9c
1 changed files with 1 additions and 1 deletions

View File

@ -190,7 +190,7 @@ static int do_semihosting(struct target *target)
} else { } else {
result = read(fd, buf, l); result = read(fd, buf, l);
armv4_5->semihosting_errno = errno; armv4_5->semihosting_errno = errno;
if (result > 0) { if (result >= 0) {
retval = target_write_buffer(target, a, result, buf); retval = target_write_buffer(target, a, result, buf);
if (retval != ERROR_OK) { if (retval != ERROR_OK) {
free(buf); free(buf);