Fix issues with gdb-memory-map.dtd
authorSimon Marchi <simon.marchi@ericsson.com>
Fri, 24 Nov 2017 22:10:25 +0000 (17:10 -0500)
committerSimon Marchi <simon.marchi@ericsson.com>
Fri, 24 Nov 2017 22:14:07 +0000 (17:14 -0500)
While writing a unit test for parse_memory_map, I tried to validate my
test input against gdb-memory-map.dtd, and found a few problems with it.
This doesn't influence how gdb parses it (AFAIK it doesn't use the
linked dtd), but if you edit the xml file in an editor that supports
dtds, you'll get plenty of errors.

  - The <memory-map> element accepts exactly one <memory> OR <property>
    as a child.  This is a problem because you can't have multiple
    <memory> elements and you shouldn't be able to have <property> elements
    as direct children of <memory-map>.
  - The <memory> element wants exactly one <property> child.  This is
    wrong, since you could have zero or more (even though we only
    support one kind of property currently).
  - I have no idea wht the device attribute of <memory> is, GDB doesn't
    read that.  I searched back in time a bit but couldn't find a trace
    of it.

I took the opportunity to tighten what is accepted as a value of the
memory type and property name attributes.  We currently accept any
string, but we can restrict them to the values GDB really accepts (and
which are documented).

AFAIK, this "file" only exists in the documentation, in gdb.texinfo, so
this is what I modified.  However, it's also available at
http://sourceware.org/gdb/gdb-memory-map.dtd.  This one should be
updated too, but I don't know how that should be done.

gdb/doc/ChangeLog:

* gdb.texinfo (Memory Map Format): Update gdb-memory-map.dtd.

gdb/doc/ChangeLog
gdb/doc/gdb.texinfo

index 62c63f1785e0455b7f6097032e885dc118f3c0ce..79a4025ba344e880f9bdae0f107d95af9ae6cf0d 100644 (file)
@@ -1,3 +1,7 @@
+2017-11-24  Simon Marchi  <simon.marchi@ericsson.com>
+
+       * gdb.texinfo (Memory Map Format): Update gdb-memory-map.dtd.
+
 2017-11-24  Pedro Alves  <palves@redhat.com>
 
        * gdb.texinfo (Completion): Update need-quoting examples.  Remove
index afaafc0c49ff89b23c60fa568c632c15b48917e6..f7067464a8b5bd8dcd5c93238cc565883353513a 100644 (file)
@@ -40840,18 +40840,17 @@ The formal DTD for memory map format is given below:
 <!-- .................................... .............. -->
 <!-- memory-map.dtd -->
 <!-- memory-map: Root element with versioning -->
-<!ELEMENT memory-map (memory | property)>
+<!ELEMENT memory-map (memory)*>
 <!ATTLIST memory-map    version CDATA   #FIXED  "1.0.0">
-<!ELEMENT memory (property)>
+<!ELEMENT memory (property)*>
 <!-- memory: Specifies a memory region,
              and its type, or device. -->
-<!ATTLIST memory        type    CDATA   #REQUIRED
+<!ATTLIST memory        type    (ram|rom|flash) #REQUIRED
                         start   CDATA   #REQUIRED
-                        length  CDATA   #REQUIRED
-                        device  CDATA   #IMPLIED>
+                        length  CDATA   #REQUIRED>
 <!-- property: Generic attribute tag -->
 <!ELEMENT property (#PCDATA | property)*>
-<!ATTLIST property      name    CDATA   #REQUIRED>
+<!ATTLIST property      name    (blocksize) #REQUIRED>
 @end smallexample
 
 @node Thread List Format