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:
parent
bef37ceba2
commit
3d2d5dcc9c
|
@ -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);
|
||||||
|
|
Loading…
Reference in New Issue