mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-10-17 21:03:55 +08:00
* 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.
This commit is contained in:
@ -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.
|
||||
|
||||
|
Reference in New Issue
Block a user