Example #1
0
static enum target_xfer_status
rs6000_xfer_shared_libraries
(struct target_ops *ops, enum target_object object,
 const char *annex, gdb_byte *readbuf, const gdb_byte *writebuf,
 ULONGEST offset, ULONGEST len, ULONGEST *xfered_len)
{
    gdb_byte *ldi_buf;
    ULONGEST result;
    struct cleanup *cleanup;

    /* This function assumes that it is being run with a live process.
       Core files are handled via gdbarch.  */
    gdb_assert (target_has_execution);

    if (writebuf)
        return TARGET_XFER_E_IO;

    ldi_buf = rs6000_ptrace_ldinfo (inferior_ptid);
    gdb_assert (ldi_buf != NULL);
    cleanup = make_cleanup (xfree, ldi_buf);
    result = rs6000_aix_ld_info_to_xml (target_gdbarch (), ldi_buf,
    readbuf, offset, len, 1);
    xfree (ldi_buf);

    do_cleanups (cleanup);

    if (result == 0)
        return TARGET_XFER_EOF;
    else
    {
        *xfered_len = result;
        return TARGET_XFER_OK;
    }
}
Example #2
0
enum target_xfer_status
rs6000_nat_target::xfer_shared_libraries
  (enum target_object object,
   const char *annex, gdb_byte *readbuf, const gdb_byte *writebuf,
   ULONGEST offset, ULONGEST len, ULONGEST *xfered_len)
{
  ULONGEST result;

  /* This function assumes that it is being run with a live process.
     Core files are handled via gdbarch.  */
  gdb_assert (target_has_execution);

  if (writebuf)
    return TARGET_XFER_E_IO;

  gdb::byte_vector ldi_buf = rs6000_ptrace_ldinfo (inferior_ptid);
  result = rs6000_aix_ld_info_to_xml (target_gdbarch (), ldi_buf.data (),
				      readbuf, offset, len, 1);

  if (result == 0)
    return TARGET_XFER_EOF;
  else
    {
      *xfered_len = result;
      return TARGET_XFER_OK;
    }
}