summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorNicolas Pitre <nico@fluxnic.net>2010-02-02 00:05:42 -0500
committerNicolas Pitre <nico@fluxnic.net>2010-02-02 00:05:42 -0500
commit3d2d5dcc9c27b84dc2e5e9ed53be0f784a450042 (patch)
tree20690f57d938cca04ec41a0125747cc69b6a110c /src
parentbef37ceba2bde6a34d003762bced007bed894bc7 (diff)
downloadopenocd+libswd-3d2d5dcc9c27b84dc2e5e9ed53be0f784a450042.tar.gz
openocd+libswd-3d2d5dcc9c27b84dc2e5e9ed53be0f784a450042.tar.bz2
openocd+libswd-3d2d5dcc9c27b84dc2e5e9ed53be0f784a450042.tar.xz
openocd+libswd-3d2d5dcc9c27b84dc2e5e9ed53be0f784a450042.zip
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>
Diffstat (limited to 'src')
-rw-r--r--src/target/arm_semihosting.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/target/arm_semihosting.c b/src/target/arm_semihosting.c
index c41c5a00..9b853d9f 100644
--- a/src/target/arm_semihosting.c
+++ b/src/target/arm_semihosting.c
@@ -190,7 +190,7 @@ static int do_semihosting(struct target *target)
} else {
result = read(fd, buf, l);
armv4_5->semihosting_errno = errno;
- if (result > 0) {
+ if (result >= 0) {
retval = target_write_buffer(target, a, result, buf);
if (retval != ERROR_OK) {
free(buf);