aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/ChangeLog8
-rw-r--r--gdb/doc/ChangeLog5
-rw-r--r--gdb/doc/gdb.texinfo10
-rw-r--r--gdb/features/gdb-target.dtd2
-rw-r--r--gdb/xml-tdesc.c25
5 files changed, 45 insertions, 5 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 5bef65e..81a50bc 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,11 @@
+2007-06-13 Daniel Jacobowitz <dan@codesourcery.com>
+
+ * xml-tdesc.c (tdesc_start_target): New.
+ (target_attributes): New.
+ (tdesc_elements): Use it.
+ * features/gdb-target.dtd: Add #FIXED version attribute for
+ <target>.
+
2007-06-13 Arthur Huillet <arthur.huillet@free.fr>
* mi/mi-cmd-var.c (mi_cmd_var_assign): Fix typo.
diff --git a/gdb/doc/ChangeLog b/gdb/doc/ChangeLog
index 5211251..8f7e732 100644
--- a/gdb/doc/ChangeLog
+++ b/gdb/doc/ChangeLog
@@ -1,5 +1,10 @@
2007-06-13 Daniel Jacobowitz <dan@codesourcery.com>
+ * gdb.texinfo (Target Description Format): Add version attribute
+ for <target>.
+
+2007-06-13 Daniel Jacobowitz <dan@codesourcery.com>
+
* gdb.texinfo (MIPS Features): Document org.gnu.gdb.mips.linux.
2007-06-13 Daniel Jacobowitz <dan@codesourcery.com>
diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
index 9c71ad2..230a6ca 100644
--- a/gdb/doc/gdb.texinfo
+++ b/gdb/doc/gdb.texinfo
@@ -25494,7 +25494,7 @@ target, or to warn you if you connect to an unsupported target.
Here is a simple target description:
@smallexample
-<target>
+<target version="1.0">
<architecture>i386:x86-64</architecture>
</target>
@end smallexample
@@ -25510,7 +25510,7 @@ are explained further below.
@smallexample
<?xml version="1.0"?>
<!DOCTYPE target SYSTEM "gdb-target.dtd">
-<target>
+<target version="1.0">
@r{[}@var{architecture}@r{]}
@r{[}@var{feature}@dots{}@r{]}
</target>
@@ -25521,7 +25521,11 @@ The description is generally insensitive to whitespace and line
breaks, under the usual common-sense rules. The XML version
declaration and document type declaration can generally be omitted
(@value{GDBN} does not require them), but specifying them may be
-useful for XML validation tools.
+useful for XML validation tools. The @samp{version} attribute for
+@samp{<target>} may also be omitted, but we recommend
+including it; if future versions of @value{GDBN} use an incompatible
+revision of @file{gdb-target.dtd}, they will detect and report
+the version mismatch.
@subsection Inclusion
@cindex target descriptions, inclusion
diff --git a/gdb/features/gdb-target.dtd b/gdb/features/gdb-target.dtd
index b05e063..8ff10fc 100644
--- a/gdb/features/gdb-target.dtd
+++ b/gdb/features/gdb-target.dtd
@@ -7,6 +7,8 @@
<!-- The root element of a GDB target description is <target>. -->
<!ELEMENT target (architecture?, feature*)>
+<!ATTLIST target
+ version CDATA #FIXED "1.0">
<!ELEMENT architecture (#PCDATA)>
diff --git a/gdb/xml-tdesc.c b/gdb/xml-tdesc.c
index 31db9c3..9b2902f 100644
--- a/gdb/xml-tdesc.c
+++ b/gdb/xml-tdesc.c
@@ -109,6 +109,22 @@ tdesc_end_arch (struct gdb_xml_parser *parser,
set_tdesc_architecture (data->tdesc, arch);
}
+/* Handle the start of a <target> element. */
+
+static void
+tdesc_start_target (struct gdb_xml_parser *parser,
+ const struct gdb_xml_element *element,
+ void *user_data, VEC(gdb_xml_value_s) *attributes)
+{
+ struct tdesc_parsing_data *data = user_data;
+ char *version = VEC_index (gdb_xml_value_s, attributes, 0)->value;
+
+ if (strcmp (version, "1.0") != 0)
+ gdb_xml_error (parser,
+ _("Target description has unsupported version \"%s\""),
+ version);
+}
+
/* Handle the start of a <feature> element. */
static void
@@ -328,6 +344,11 @@ static const struct gdb_xml_element feature_children[] = {
{ NULL, NULL, NULL, GDB_XML_EF_NONE, NULL, NULL }
};
+static const struct gdb_xml_attribute target_attributes[] = {
+ { "version", GDB_XML_AF_NONE, NULL, NULL },
+ { NULL, GDB_XML_AF_NONE, NULL, NULL }
+};
+
static const struct gdb_xml_element target_children[] = {
{ "architecture", NULL, NULL, GDB_XML_EF_OPTIONAL,
NULL, tdesc_end_arch },
@@ -338,8 +359,8 @@ static const struct gdb_xml_element target_children[] = {
};
static const struct gdb_xml_element tdesc_elements[] = {
- { "target", NULL, target_children, GDB_XML_EF_NONE,
- NULL, NULL },
+ { "target", target_attributes, target_children, GDB_XML_EF_NONE,
+ tdesc_start_target, NULL },
{ NULL, NULL, NULL, GDB_XML_EF_NONE, NULL, NULL }
};