diff options
author | Daniel Jacobowitz <drow@false.org> | 2006-07-12 18:13:45 +0000 |
---|---|---|
committer | Daniel Jacobowitz <drow@false.org> | 2006-07-12 18:13:45 +0000 |
commit | 13547ab600a0929b12f354dc144f1aef37938f30 (patch) | |
tree | 76460826dbe9bbd235dd48cbc8a638b06193c9ec /gdb/remote.c | |
parent | edfb1a26487b8c8263b434dd07466733ea17ace9 (diff) | |
download | gdb-13547ab600a0929b12f354dc144f1aef37938f30.zip gdb-13547ab600a0929b12f354dc144f1aef37938f30.tar.gz gdb-13547ab600a0929b12f354dc144f1aef37938f30.tar.bz2 |
* target.c (target_read): Stop if target_read_partial returns 0
when some bytes have already been read.
(target_write): Likewise for target_write_partial.
(target_read_partial, target_write_partial): Make static.
(target_read_alloc): New.
* target.h: Doc fixes.
(target_read_partial, target_write_partial): Delete prototypes.
(target_read_alloc): New prototype.
* auxv.c (target_auxv_read): Delete.
(target_auxv_search, fprint_target_auxv): Use target_read_alloc.
* auxv.h (target_auxv_read): Delete prototype.
* avr-tdep.c (avr_io_reg_read_command): Use target_read_alloc.
* ia64-tdep.c (getunwind_table, get_kernel_table): Likewise.
* linux-nat.c (linux_nat_make_corefile_notes): Likewise.
* procfs.c (procfs_make_note_section): Likewise.
* remote.c (remote_xfer_partial): Don't loop here.
* sparc-tdep.c (sparc_fetch_wcookie): Use target_read.
Diffstat (limited to 'gdb/remote.c')
-rw-r--r-- | gdb/remote.c | 46 |
1 files changed, 17 insertions, 29 deletions
diff --git a/gdb/remote.c b/gdb/remote.c index da0f5ca..eef8bf2 100644 --- a/gdb/remote.c +++ b/gdb/remote.c @@ -5147,35 +5147,23 @@ remote_xfer_partial (struct target_ops *ops, enum target_object object, case TARGET_OBJECT_AUXV: if (remote_protocol_packets[PACKET_qPart_auxv].support != PACKET_DISABLE) { - unsigned int total = 0; - while (len > 0) - { - LONGEST n = min ((get_remote_packet_size () - 2) / 2, len); - snprintf (rs->buf, get_remote_packet_size (), - "qPart:auxv:read::%s,%s", - phex_nz (offset, sizeof offset), - phex_nz (n, sizeof n)); - i = putpkt (rs->buf); - if (i < 0) - return total > 0 ? total : i; - rs->buf[0] = '\0'; - getpkt (&rs->buf, &rs->buf_size, 0); - if (packet_ok (rs->buf, &remote_protocol_packets[PACKET_qPart_auxv]) - != PACKET_OK) - return total > 0 ? total : -1; - if (strcmp (rs->buf, "OK") == 0) - break; /* Got EOF indicator. */ - /* Got some data. */ - i = hex2bin (rs->buf, readbuf, len); - if (i > 0) - { - readbuf = (void *) ((char *) readbuf + i); - offset += i; - len -= i; - total += i; - } - } - return total; + LONGEST n = min ((get_remote_packet_size () - 2) / 2, len); + snprintf (rs->buf, get_remote_packet_size (), + "qPart:auxv:read::%s,%s", + phex_nz (offset, sizeof offset), + phex_nz (n, sizeof n)); + i = putpkt (rs->buf); + if (i < 0) + return i; + rs->buf[0] = '\0'; + getpkt (&rs->buf, &rs->buf_size, 0); + if (packet_ok (rs->buf, &remote_protocol_packets[PACKET_qPart_auxv]) + != PACKET_OK) + return -1; + if (strcmp (rs->buf, "OK") == 0) + return 0; /* Got EOF indicator. */ + /* Got some data. */ + return hex2bin (rs->buf, readbuf, len); } return -1; |