Re: [PATCH 1/2] Fix issues with gdb-memory-map.dtd

Simon Marchi
2017-11-24T16:31:15Z

On 2017-11-09 06:18 PM, Simon Marchi wrote:
> 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 could 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/gdb.texinfo | 11 +++++------
> 1 file changed, 5 insertions(+), 6 deletions(-)
>
> diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
> index 29d4789..37d3e3d 100644
> --- a/gdb/doc/gdb.texinfo
> +++ b/gdb/doc/gdb.texinfo
> @@ -40807,18 +40807,17 @@ The formal DTD for memory map format is given below:
>
>
>
> -<!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>
>
> <!ELEMENT property (#PCDATA | property)*>
> -<!ATTLIST property name CDATA #REQUIRED>
> +<!ATTLIST property name (blocksize) #REQUIRED>
> @end smallexample
>
> @node Thread List Format
>

Hi Joel,

You are probably the person that has the most chance to know how to
update this file:

http://sourceware.org/gdb/gdb-memory-map.dtd

Any idea?

Simon