gdb.trace: Save XML target description in tfile.

gdb/ChangeLog:

	* ctf.c (ctf_write_tdesc): New function.
	(ctf_write_ops): Wire in ctf_write_tdesc.
	* tracefile-tfile.c (tfile_write_tdesc): New function.
	(tfile_write_ops): Wire in tfile_write_tdesc.
	* tracefile.c (trace_save): Call write_tdesc method.
	* tracefile.h (struct trace_file_write_ops): Add write_tdesc method.
	* xml-tdesc.c (target_fetch_description_xml): New function.
	* xml-tdesc.h: Add target_fetch_description_xml prototype.
This commit is contained in:
Marcin Kościelnicki 2016-02-05 21:32:52 +01:00
parent 9f6a71b4bf
commit 18d3cec54e
7 changed files with 101 additions and 0 deletions

View file

@ -630,3 +630,33 @@ target_read_description_xml (struct target_ops *ops)
return tdesc;
}
/* Fetches an XML target description using OPS, processing
includes, but not parsing it. Used to dump whole tdesc
as a single XML file. */
char *
target_fetch_description_xml (struct target_ops *ops)
{
struct target_desc *tdesc;
char *tdesc_str;
char *expanded_text;
struct cleanup *back_to;
tdesc_str = fetch_available_features_from_target ("target.xml", ops);
if (tdesc_str == NULL)
return NULL;
back_to = make_cleanup (xfree, tdesc_str);
expanded_text = xml_process_xincludes (_("target description"),
tdesc_str,
fetch_available_features_from_target, ops, 0);
do_cleanups (back_to);
if (expanded_text == NULL)
{
warning (_("Could not load XML target description; ignoring"));
return NULL;
}
return expanded_text;
}