\f
char *
-memory_error_message (enum target_xfer_error err,
+memory_error_message (enum target_xfer_status err,
struct gdbarch *gdbarch, CORE_ADDR memaddr)
{
switch (err)
bounds. */
return xstrprintf (_("Cannot access memory at address %s"),
paddress (gdbarch, memaddr));
- case TARGET_XFER_E_UNAVAILABLE:
+ case TARGET_XFER_UNAVAILABLE:
return xstrprintf (_("Memory at address %s unavailable."),
paddress (gdbarch, memaddr));
default:
internal_error (__FILE__, __LINE__,
- "unhandled target_xfer_error: %s (%s)",
- target_xfer_error_to_string (err),
+ "unhandled target_xfer_status: %s (%s)",
+ target_xfer_status_to_string (err),
plongest (err));
}
}
/* Report a memory error by throwing a suitable exception. */
void
-memory_error (enum target_xfer_error err, CORE_ADDR memaddr)
+memory_error (enum target_xfer_status err, CORE_ADDR memaddr)
{
char *str;
+ enum errors exception = GDB_NO_ERROR;
/* Build error string. */
str = memory_error_message (err, target_gdbarch (), memaddr);
switch (err)
{
case TARGET_XFER_E_IO:
- err = MEMORY_ERROR;
+ exception = MEMORY_ERROR;
break;
- case TARGET_XFER_E_UNAVAILABLE:
- err = NOT_AVAILABLE_ERROR;
+ case TARGET_XFER_UNAVAILABLE:
+ exception = NOT_AVAILABLE_ERROR;
break;
}
/* Throw it. */
- throw_error (err, ("%s"), str);
+ throw_error (exception, ("%s"), str);
}
/* Same as target_read_memory, but report an error if can't read. */
void
read_memory (CORE_ADDR memaddr, gdb_byte *myaddr, ssize_t len)
{
- LONGEST xfered = 0;
+ ULONGEST xfered = 0;
while (xfered < len)
{
- LONGEST xfer = target_xfer_partial (current_target.beneath,
- TARGET_OBJECT_MEMORY, NULL,
- myaddr + xfered, NULL,
- memaddr + xfered, len - xfered);
-
- if (xfer == 0)
- memory_error (TARGET_XFER_E_IO, memaddr + xfered);
- if (xfer < 0)
- memory_error (xfer, memaddr + xfered);
- xfered += xfer;
+ enum target_xfer_status status;
+ ULONGEST xfered_len;
+
+ status = target_xfer_partial (current_target.beneath,
+ TARGET_OBJECT_MEMORY, NULL,
+ myaddr + xfered, NULL,
+ memaddr + xfered, len - xfered,
+ &xfered_len);
+
+ if (status != TARGET_XFER_OK)
+ memory_error (status == TARGET_XFER_EOF ? TARGET_XFER_E_IO : status,
+ memaddr + xfered);
+
+ xfered += xfered_len;
QUIT;
}
}