diff options
author | Daniel Jacobowitz <drow@false.org> | 2007-02-07 22:48:06 +0000 |
---|---|---|
committer | Daniel Jacobowitz <drow@false.org> | 2007-02-07 22:48:06 +0000 |
commit | 108546a0ea067d8e5da4d223fb03c6659b153bd0 (patch) | |
tree | e36d290d0b6ae5ab759822bb3fb0d474243a7b2d /gdb/testsuite/gdb.xml | |
parent | 7bd1c9613d962037a19b474fda5c6ab4cbf38501 (diff) | |
download | gdb-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/testsuite/gdb.xml')
-rw-r--r-- | gdb/testsuite/gdb.xml/bad-include.xml | 1 | ||||
-rw-r--r-- | gdb/testsuite/gdb.xml/inc-2.xml | 1 | ||||
-rw-r--r-- | gdb/testsuite/gdb.xml/inc-body.xml | 1 | ||||
-rw-r--r-- | gdb/testsuite/gdb.xml/includes.xml | 3 | ||||
-rw-r--r-- | gdb/testsuite/gdb.xml/loop.xml | 1 | ||||
-rw-r--r-- | gdb/testsuite/gdb.xml/tdesc-xinclude.exp | 54 |
6 files changed, 61 insertions, 0 deletions
diff --git a/gdb/testsuite/gdb.xml/bad-include.xml b/gdb/testsuite/gdb.xml/bad-include.xml new file mode 100644 index 0000000..f7a2b72 --- /dev/null +++ b/gdb/testsuite/gdb.xml/bad-include.xml @@ -0,0 +1 @@ +<xi:include href="nonexistant.xml"/> diff --git a/gdb/testsuite/gdb.xml/inc-2.xml b/gdb/testsuite/gdb.xml/inc-2.xml new file mode 100644 index 0000000..b076814 --- /dev/null +++ b/gdb/testsuite/gdb.xml/inc-2.xml @@ -0,0 +1 @@ +<xi:include href="inc-body.xml"/> diff --git a/gdb/testsuite/gdb.xml/inc-body.xml b/gdb/testsuite/gdb.xml/inc-body.xml new file mode 100644 index 0000000..f7d37cb --- /dev/null +++ b/gdb/testsuite/gdb.xml/inc-body.xml @@ -0,0 +1 @@ +<architecture>invalid-body</architecture> diff --git a/gdb/testsuite/gdb.xml/includes.xml b/gdb/testsuite/gdb.xml/includes.xml new file mode 100644 index 0000000..3a6a243 --- /dev/null +++ b/gdb/testsuite/gdb.xml/includes.xml @@ -0,0 +1,3 @@ +<target> + <xi:include href="inc-2.xml"/> +</target> diff --git a/gdb/testsuite/gdb.xml/loop.xml b/gdb/testsuite/gdb.xml/loop.xml new file mode 100644 index 0000000..edd6d20 --- /dev/null +++ b/gdb/testsuite/gdb.xml/loop.xml @@ -0,0 +1 @@ +<xi:include href="loop.xml"/> diff --git a/gdb/testsuite/gdb.xml/tdesc-xinclude.exp b/gdb/testsuite/gdb.xml/tdesc-xinclude.exp new file mode 100644 index 0000000..90d4fe0 --- /dev/null +++ b/gdb/testsuite/gdb.xml/tdesc-xinclude.exp @@ -0,0 +1,54 @@ +# Copyright 2007 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +if {[gdb_skip_xml_test]} { + unsupported "tdesc-errors.exp" + return -1 +} + +gdb_start + +proc set_arch { srcfile errmsg } { + global gdb_prompt + global srcdir + global subdir + + # Anchor the test output, so that error messages are detected. + set cmd "set tdesc filename $srcdir/$subdir/$srcfile" + set msg $cmd + set cmd_regex [string_to_regexp $cmd] + gdb_test_multiple $cmd $msg { + -re "^$cmd_regex\r\n$errmsg$gdb_prompt $" { + pass $msg + } + } +} + +set common_warn "\r\nwarning: Could not load XML target description; ignoring\r\n" + +# This file is valid, but specifies an unknown architecture. +# We should get a warning, if we process the includes correctly. +set_arch "includes.xml" \ + "warning:.*specified unknown architecture.* \"invalid-body\"$common_warn" + +# This file contains a missing include. We should warn the user about +# it. +set_arch "bad-include.xml" \ + "warning:.*Could not load XML document \"nonexistant.xml\"$common_warn" + +# Make sure we detect infinite loops, eventually. +set_arch "loop.xml" \ + "warning:.*Maximum XInclude depth.*$common_warn" |