aboutsummaryrefslogtreecommitdiff
path: root/gdb/xml-support.h
diff options
context:
space:
mode:
authorDaniel Jacobowitz <drow@false.org>2007-02-07 22:48:06 +0000
committerDaniel Jacobowitz <drow@false.org>2007-02-07 22:48:06 +0000
commit108546a0ea067d8e5da4d223fb03c6659b153bd0 (patch)
treee36d290d0b6ae5ab759822bb3fb0d474243a7b2d /gdb/xml-support.h
parent7bd1c9613d962037a19b474fda5c6ab4cbf38501 (diff)
downloadgdb-108546a0ea067d8e5da4d223fb03c6659b153bd0.zip
gdb-108546a0ea067d8e5da4d223fb03c6659b153bd0.tar.gz
gdb-108546a0ea067d8e5da4d223fb03c6659b153bd0.tar.bz2
* Makefile.in (XMLFILES): New.
(COMMON_OBS): Add xml-builtin.o. (xml-builtin.c, stamp-xml): New rules. (xml-tdesc.o): Update. * features/feature_to_c.sh: New file. * xml-support.c (MAX_XINCLUDE_DEPTH): Define. (struct gdb_xml_parser): Add dtd_name and is_xinclude. (gdb_xml_start_element): Initialize scope after possibly reallocating scopes. Move cleanup later. Handle the XInclude description specially. (gdb_xml_end_element): Only parse the body if there is a current element. Call XML_DefaultCurrent if there is no element. (gdb_xml_fetch_external_entity, gdb_xml_use_dtd): New. (struct xinclude_parsing_data, xinclude_start_include) (xinclude_end_include, xml_xinclude_default) (xml_xinclude_start_doctype, xml_xinclude_end_doctype) (xml_xinclude_xml_decl, xml_xinclude_cleanup, xinclude_attributes) (xinclude_elements, xml_process_xincludes, fetch_xml_builtin): New. * xml-support.h (xml_fetch_another, xml_process_xincludes) (fetch_xml_builtin, xml_builtin, gdb_xml_use_dtd): New declarations. * xml-tdesc.c (tdesc_parse_xml): Add fetcher_baton argument. Expand XInclude directives. Use the compiled in DTD. (fetch_xml_from_file): Add baton argument. Treat it as a containing directory name. Do not warn here. (file_read_description_xml): Update call. Warn here instead. Pass a dirname as baton. (fetch_available_features_from_target): New. (target_read_description_xml): Use it. * features/gdb-target.dtd: Add copyright notice. Use xinclude.dtd to handle XInclude. * features/xinclude.dtd: New file. * gdb.xml/bad-include.xml, gdb.xml/inc-2.xml, gdb.xml/inc-body.xml, gdb.xml/includes.xml, gdb.xml/tdesc-xinclude.exp: New files. * gdb.texinfo (Target Description Format): Add section on XInclude.
Diffstat (limited to 'gdb/xml-support.h')
-rw-r--r--gdb/xml-support.h34
1 files changed, 34 insertions, 0 deletions
diff --git a/gdb/xml-support.h b/gdb/xml-support.h
index 8a9dd61..de8ae5b 100644
--- a/gdb/xml-support.h
+++ b/gdb/xml-support.h
@@ -30,6 +30,35 @@ struct gdb_xml_parser;
struct gdb_xml_element;
struct gdb_xml_attribute;
+/* Support for XInclude. */
+
+/* Callback to fetch a new XML file, based on the provided HREF. */
+
+typedef char *(*xml_fetch_another) (const char *href, void *baton);
+
+/* Return a new string which is the expansion of TEXT after processing
+ <xi:include> tags. FETCHER will be called (with FETCHER_BATON) to
+ retrieve any new files. DEPTH should be zero on the initial call.
+
+ On failure, this function uses NAME in a warning and returns NULL.
+ It may throw an exception, but does not for XML parsing
+ problems. */
+
+char *xml_process_xincludes (const char *name, const char *text,
+ xml_fetch_another fetcher, void *fetcher_baton,
+ int depth);
+
+/* Return an XML document which was compiled into GDB, from
+ the given FILENAME, or NULL if the file was not compiled in. */
+
+const char *fetch_xml_builtin (const char *filename);
+
+/* The text of compiled-in XML documents, from xml-builtin.c
+ (generated). */
+extern const char *xml_builtin[][2];
+
+/* Simplified XML parser infrastructure. */
+
/* A name and value pair, used to record parsed attributes. */
struct gdb_xml_value
@@ -140,6 +169,11 @@ struct gdb_xml_parser *gdb_xml_create_parser_and_cleanup
(const char *name, const struct gdb_xml_element *elements,
void *user_data);
+/* Associate DTD_NAME, which must be the name of a compiled-in DTD,
+ with PARSER. */
+
+void gdb_xml_use_dtd (struct gdb_xml_parser *parser, const char *dtd_name);
+
/* Invoke PARSER on BUFFER. BUFFER is the data to parse, which
should be NUL-terminated.