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; } }
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; } }