+static enum target_xfer_status
+tfile_xfer_partial_features (struct target_ops *ops, const char *annex,
+ gdb_byte *readbuf, const gdb_byte *writebuf,
+ ULONGEST offset, ULONGEST len,
+ ULONGEST *xfered_len)
+{
+ if (strcmp (annex, "target.xml"))
+ return TARGET_XFER_E_IO;
+
+ if (readbuf == NULL)
+ error (_("tfile_xfer_partial: tdesc is read-only"));
+
+ if (trace_tdesc.used_size == 0)
+ return TARGET_XFER_E_IO;
+
+ if (offset >= trace_tdesc.used_size)
+ return TARGET_XFER_EOF;
+
+ if (len > trace_tdesc.used_size - offset)
+ len = trace_tdesc.used_size - offset;
+
+ memcpy (readbuf, trace_tdesc.buffer + offset, len);
+ *xfered_len = len;
+
+ return TARGET_XFER_OK;
+}
+