From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 27924 invoked by alias); 12 Jun 2007 12:37:23 -0000 Received: (qmail 27822 invoked by uid 22791); 12 Jun 2007 12:37:22 -0000 X-Spam-Check-By: sourceware.org Received: from NaN.false.org (HELO nan.false.org) (208.75.86.248) by sourceware.org (qpsmtpd/0.31) with ESMTP; Tue, 12 Jun 2007 12:37:19 +0000 Received: from nan.false.org (localhost [127.0.0.1]) by nan.false.org (Postfix) with ESMTP id 6BEC6982F1 for ; Tue, 12 Jun 2007 12:37:17 +0000 (GMT) Received: from caradoc.them.org (22.svnf5.xdsl.nauticom.net [209.195.183.55]) by nan.false.org (Postfix) with ESMTP id 2E534982DC for ; Tue, 12 Jun 2007 12:37:17 +0000 (GMT) Received: from drow by caradoc.them.org with local (Exim 4.67) (envelope-from ) id 1Hy5cp-0001UO-AV for gdb-patches@sourceware.org; Tue, 12 Jun 2007 08:37:31 -0400 Date: Tue, 12 Jun 2007 12:37:00 -0000 From: Daniel Jacobowitz To: gdb-patches@sourceware.org Subject: [rfa/doc] Add version to XML target descriptions Message-ID: <20070612123731.GA5373@caradoc.them.org> Mail-Followup-To: gdb-patches@sourceware.org MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.15 (2007-04-09) X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2007-06/txt/msg00154.txt.bz2 Carlos O'Donell suggested that our XML descriptions should have a format version number in them, which may simplify future changes. This patch adds a marker. The use of #FIXED means that omitting the version is OK - GDB will assume it's the version that GDB knows about. But if you include the version, and GDB changes to a new version, then the version marker will cause GDB to give a sensible error (or allow a hypothetical future GDB to handle multiple versions of the format). Eli, does the documentation update look OK? Once this patch is committed I will update the copy on the web site too. -- Daniel Jacobowitz CodeSourcery 2007-06-12 Daniel Jacobowitz * gdb.texinfo (Target Description Format): Add version attribute for . * xml-tdesc.c (tdesc_start_target): New. (target_attributes): New. (tdesc_elements): Use it. * features/gdb-target.dtd: Add #FIXED version attribute for . Index: gdb/doc/gdb.texinfo =================================================================== --- gdb/doc/gdb.texinfo (revision 173463) +++ gdb/doc/gdb.texinfo (working copy) @@ -25478,7 +25478,7 @@ target, or to warn you if you connect to Here is a simple target description: @smallexample - + i386:x86-64 @end smallexample @@ -25494,7 +25494,7 @@ are explained further below. @smallexample - + @r{[}@var{architecture}@r{]} @r{[}@var{feature}@dots{}@r{]} @@ -25505,7 +25505,11 @@ The description is generally insensitive 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 version attribute for +@samp{} 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 Index: gdb/xml-tdesc.c =================================================================== --- gdb/xml-tdesc.c (revision 173463) +++ gdb/xml-tdesc.c (working copy) @@ -126,6 +126,22 @@ tdesc_end_arch (struct gdb_xml_parser *p set_tdesc_architecture (data->tdesc, arch); } +/* Handle the start of a 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 element. */ static void @@ -599,6 +615,11 @@ static const struct gdb_xml_element feat { 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 }, @@ -611,8 +632,8 @@ static const struct gdb_xml_element targ }; 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 } }; Index: gdb/features/gdb-target.dtd =================================================================== --- gdb/features/gdb-target.dtd (revision 173463) +++ gdb/features/gdb-target.dtd (working copy) @@ -7,6 +7,8 @@ +