Message ID | 1510269503-12483-1-git-send-email-simon.marchi@ericsson.com |
---|---|
State | New, archived |
Headers |
Received: (qmail 117671 invoked by alias); 9 Nov 2017 23:18:41 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: <gdb-patches.sourceware.org> List-Unsubscribe: <mailto:gdb-patches-unsubscribe-##L=##H@sourceware.org> List-Subscribe: <mailto:gdb-patches-subscribe@sourceware.org> List-Archive: <http://sourceware.org/ml/gdb-patches/> List-Post: <mailto:gdb-patches@sourceware.org> List-Help: <mailto:gdb-patches-help@sourceware.org>, <http://sourceware.org/ml/#faqs> Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 117662 invoked by uid 89); 9 Nov 2017 23:18:41 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-25.4 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, SPF_PASS autolearn=ham version=3.3.2 spammy=flash, ram, DTD, dtd X-HELO: sessmg22.ericsson.net Received: from sessmg22.ericsson.net (HELO sessmg22.ericsson.net) (193.180.251.58) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Thu, 09 Nov 2017 23:18:39 +0000 Received: from ESESSHC003.ericsson.se (Unknown_Domain [153.88.183.27]) by sessmg22.ericsson.net (Symantec Mail Security) with SMTP id FF.A2.15369.B42E40A5; Fri, 10 Nov 2017 00:18:36 +0100 (CET) Received: from EUR01-HE1-obe.outbound.protection.outlook.com (153.88.183.145) by oa.msg.ericsson.com (153.88.183.27) with Microsoft SMTP Server (TLS) id 14.3.352.0; Fri, 10 Nov 2017 00:18:35 +0100 Received: from elxacz23q12.ca.am.ericsson.se (192.75.88.130) by DB4PR07MB313.eurprd07.prod.outlook.com (2a01:111:e400:982f::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.218.6; Thu, 9 Nov 2017 23:18:33 +0000 From: Simon Marchi <simon.marchi@ericsson.com> To: <gdb-patches@sourceware.org> CC: Simon Marchi <simon.marchi@ericsson.com> Subject: [PATCH 1/2] Fix issues with gdb-memory-map.dtd Date: Thu, 9 Nov 2017 18:18:22 -0500 Message-ID: <1510269503-12483-1-git-send-email-simon.marchi@ericsson.com> MIME-Version: 1.0 Content-Type: text/plain X-ClientProxiedBy: BN6PR08CA0090.namprd08.prod.outlook.com (2603:10b6:404:b6::28) To DB4PR07MB313.eurprd07.prod.outlook.com (2a01:111:e400:982f::13) X-MS-Office365-Filtering-Correlation-Id: 6caa22de-c2c1-4057-852a-08d527c832cf X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(2017052603253); SRVR:DB4PR07MB313; X-Microsoft-Exchange-Diagnostics: 1; DB4PR07MB313; 3:i5n5tQwNFhmMnQeo+1uSpynOyXDgTOiqdkzmjc+7AwTs8BO69NjUbPTOwEmiLTlGDbKG4UtQEjlx7poDcq9DXqPosi+aDHpVDwuK0WcwcYOpP3XK2BS0Qdfk82l6Z99P1oxU0V1nAc8yXYfYrzR3yTFOvOr+H3sVvZVNf9nCljr8MxbJ7vpiev+z33nlOibXFd8oaGIvWqpuTkXzmiXcPx/gS9N3bvYHrjQgSW7uUFMzT2Nn0rf/njY8M0ggcAxh; 25:lZ0d4dQ8f0SZH7vi9teR00wD6lm73XS8VfwqLZg7D9HgjIFDssKKv2RSBWVh48stiL9++RgEZ/E3DXNJeV7Y4vn5GP3x8NRuKMFO++06zhQyw0sGBIez5xXHLsB+lVPDGR1WKeZfrwtd9wVQZiUPwBQ1z1nia37fC0Jw0zL/Fd+dOV7NWuTyvY1gMaIbchi/JxfbMk7pssTdpc8KBCqJ0dE+aZjzdg/NNxpaMtD3BfVYJWWOEw9eKQLlTFrASeJq96UR07FxhvRBet7MPfS2yPA9f9BZqMnxX7l+b/kB0m5qmiMma30S1LMZSyas73A8QB8Fa4fACYj7+MEpnAtP4bk21+Owm7INiLz230YrpgU=; 31:PC4PrwpiwD0AYpYwtYInGoFnwpikD3E5TUb1kayx18XEV/52dOLIrmeUhYpBC+jiy3fvJ4ghdRP5Dz+6xOLZm5A9I6wGSD71lCIcWGswuGwDxjAFgXhbX7kJ6WqiC4ft6QE1PNxLzvU/jeKkrc6lFIUpmsSJ/H0d8TjSexYA/HyDwKBOdHexLNzUryYXdbUamdjt1bfTl0BKbgowKi2mzOLD6ihazFnyK6Cy/AN3Zxg= X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DB4PR07MB313: X-Microsoft-Exchange-Diagnostics: 1; DB4PR07MB313; 20:98a/pyduRhOinSmxP0fBbH7HRbJCfCN5QhoL4xnc8kIROkBxdPOW1BtkXBYEdMDF7myrfJsCT4J84j8CZATQUpIW7r5G8DxkS8290wtC524d4F5VS4EfjWRhSlRccrU3tyqaGc/MoGBS2KVwMjvbnwj903p63qvWKCQ3YzNs4dazN5NShQ/oOLL4hAMZILvHYGMHfSiBgim6xKx6O7HsRiGdCXFSJ9PTsj3+MaBMNEPAVCap133CCZFXlOU2zKDpyum/VSTlz1qTHwbPq8OkY5q0nkzOKSV6hNwQMmy9CBXdC5OzvZq6bDSAvQThrRI6eF6Nf8Ljxr+tsFKI4KskRdm1U/oPOkCpf0GFgcM3KcB207A24Wxt2Izky6yT6oWE9H6NEqO0HvWcsFQKc0Cu/h/Aj4OPXoI0cOkzbxmcwbNL5yTb0o9qCN7FBCObLxAjzp3iP1X2QYgL/ACyv42s68btZty9ecJIiejZpIpiFx7gd6kwlNnUfEK2Vv0c4Fav; 4:W1qG5BVoBmAvJHLybwGT7uHLmnp8ZZ4mH8wYTHyUXao4c2edX876RkF4mfxG0IUGXpPTu3nowOiRRrzw8fqA5eN705xTBbCX67LX7pFvdSaANS9QsU4NYgBSxaFG8281fjGEU3kTYRHjYOjdcDNsRu45u3L6dC1Oxtbmst1llxMMD3WlFD0+OCFcFK1DzuYZUedFlD8rYZcgtoJfuam4knm+XE5j07+k9pPvD2cbJIx+yHlwu613sX3SRnUUqC02wEaVRb2jS04PC1C96ZSjb084v71hPQoE6RQkFNWxC73TL6NJTlrG2z75bs0lGuJ/ X-Exchange-Antispam-Report-Test: UriScan:(131327999870524); X-Microsoft-Antispam-PRVS: <DB4PR07MB313A974ED43B42825A227D0ED570@DB4PR07MB313.eurprd07.prod.outlook.com> X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(2401047)(5005006)(8121501046)(3231021)(3002001)(10201501046)(100000703101)(100105400095)(93006095)(93001095)(6041248)(20161123564025)(20161123560025)(20161123562025)(20161123558100)(20161123555025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:DB4PR07MB313; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:DB4PR07MB313; X-Forefront-PRVS: 0486A0CB86 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6009001)(376002)(39860400002)(346002)(199003)(189002)(54534003)(3846002)(105586002)(97736004)(5003940100001)(7736002)(6506006)(50466002)(48376002)(6306002)(6486002)(305945005)(478600001)(16586007)(47776003)(66066001)(2361001)(189998001)(8936002)(8676002)(33646002)(81166006)(81156014)(68736007)(16526018)(50226002)(86362001)(6116002)(101416001)(5660300001)(25786009)(2351001)(107886003)(53376002)(230783001)(50986999)(6666003)(316002)(966005)(53936002)(6512007)(106356001)(2906002)(6916009)(4326008)(36756003); DIR:OUT; SFP:1101; SCL:1; SRVR:DB4PR07MB313; H:elxacz23q12.ca.am.ericsson.se; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; Received-SPF: None (protection.outlook.com: ericsson.com does not designate permitted sender hosts) Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=simon.marchi@ericsson.com; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DB4PR07MB313; 23:lEhAd/7UBSYdxd/tjL4REIhT2wh5ULlXNB0xJrlBUn?= =?us-ascii?Q?rXanqED2qP+9AtdQdMME2V+vL+DsTJ4vMAI7+/x54s4joTihyYAy8Bt6VCkN?= =?us-ascii?Q?rmf7kyeR93iXg6KLJbX7Uvq/7n9XIpzt1cpExA/T2UTPLAiA7KMj98NcaBmH?= =?us-ascii?Q?rpGSziqVhoz7g7NQJoJL13Hcv73Q9gYWWc58nSW1lDpTK4ig50mBiS+W+gSh?= =?us-ascii?Q?OEUuX3I8jDgmmbW+viXOptkUyaYIV0vUfT6GTMwzC28iwoGcEkZzp3kYl5oq?= =?us-ascii?Q?VwGUFC0oRyNOfG4d3OngmC5kZniD6fweTiMORS5uwmjglVh0mWk4XqZbwjgV?= =?us-ascii?Q?spjTVJhys0kM3Ja7jv8HB5m7EyF0Yl1pYk4RVmDODmSco+qoZzI0+hnDwfX9?= =?us-ascii?Q?lVyLf/1//g4YrO7yvJ7sTLEGg0PJEpuD5mV+2FezV53zR+uv/1MDdOHTQ6Xi?= =?us-ascii?Q?UE0JXWN3PFOnbznSTjOd9171iZ6y7jSLZRbV3B5q0m9YrPcIDVTa7pedzWKq?= =?us-ascii?Q?lyb8TaO7P7DdUxeTR0VvOeBMUcfP0GEux07i1Rj1xKumesuhSRiOrbQnkZle?= =?us-ascii?Q?IxcxZxq/JeTkh80rNHhwCPusri6x/ovwRIHRseDfaLOaNEy2WvaoHCXKFP5f?= =?us-ascii?Q?Y4aLOCZRjrylBE+heZSD25MJkvR7dvZCOP7fRHfmX/G9vWS/+bpjVVeWxj+t?= =?us-ascii?Q?HSZoONt+xBXSwDEfb6hEh8EGYB4uHpluCn3kJv/2A/m4vwR2pVUFU4NCDNMe?= =?us-ascii?Q?Ee0SvfRjtSV0zOI+hgTFttvsh1mcWqeP7wsoUTnt5LlwfH/BWliBjqUDpKRx?= =?us-ascii?Q?4RI10OFncKqkw3gHwnXPhTGw5+5UEo2Ck0ejioeKmQf8V8Ki0QGzFJEGExUH?= =?us-ascii?Q?KzQCH000fB+WWNXO+QFXMU9/W5rwUYE97zjRhigqGGsOOkLvT0KpCU7BlC6+?= =?us-ascii?Q?bh7GaZ2G7bhRhgnPS6vUeFkLyM1jGPoqpagdWGYHC7uptMJRg8L1iKo/qhrO?= =?us-ascii?Q?IWOOIQE2B3nWl3CFeM95uoKX7uXxE9hgX6gG/vSoRMPfDGApuAcOMcOLlKeO?= =?us-ascii?Q?YhnAtD9CpZ9R/MKxTTXibXnWREiMS9orwIVmn+6KFue5oqnu6egrvGuoxSes?= =?us-ascii?Q?+PINcAC7mj+0HiCDYBMzNuqX3P0QydVaxDjHCU4k50QewfWEQtm5tf+0o24p?= =?us-ascii?Q?mp0QzO2wjH126Gv1uvCHWyQzMguB8qrf11?= X-Microsoft-Exchange-Diagnostics: 1; DB4PR07MB313; 6:vwMoUMqgwLgkZDkawCS9QfalOUckoo45pI5gWf4zB3pe1nRIHsSeLsunfYfPssN43jVeg04ZxisrdW8gwva4HpZPa02QCJaewOS2i+y2GaJ8+Urrj/lu59Pj6eA7TWZLp65FjU/iKqn0cYyUTfp9DC8dylGrSZ5MDZFPSprNL7NAEQONPlK11EEGZtYdPbfl2LZzbbmWrIbijziVzS/JllOn+WRJH38p85SzM4B8cAIryIYOmzbM3w85Z9Vf1QMTQ+F/mV/flUue7SYOtu0Shn3pe/19ZpJg6MJYY95O9cBRo4XimjP+zdJzLt8molVg6eQVq/T+BEYyJUYig7wZZQQYLk0Rbzdk0WhcdnufZDs=; 5:OFNpH542JsNS5J8/5qVMrpfa1oDMzanAPLdTfoZtaCbIKzRvFhs94EDj8OOPV4a58KJH28yjdTLImw9n3Kw+jqlc8/ospcVAfun3wWmYyUdIraXxsCx75aDZ6ZFrKMLgHmqYgRrwDz06P+8xtASE8z5hNiNvjE170o8KPc9F+aQ=; 24:mV62HE59b2lQlFPaldEjSq6bv45EfT34IH8bTS46k2CEWPeRMZpu5EGtqggb/t7/7m/a2JvCkcsCjmKdqz+KHzRpifPnlsyvzW/8kANa4dE=; 7:bOyITJv2iANzHCIN7Bqt7u5zxujNEe8VgWkljN27S7u6fZk5kioYH82zSAqQx/qvEuoAaOhBRN81rILdT9OWZXPJ0+PdsZZe/r06WnUZZSaYnZxzOY0R7RwkKdRLlFVddl0MGMzhOeiY3ylWPeeC78k1DzXxFyBEFk14Q2TSXcao0+ArN+9wfSdbx4XeEPkD3tUl6h8aa2EQUmZAoC1hZPvycsah5rtgjcvpJVqmPVkggTjRqB9+w77mXLnzSnDH SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Nov 2017 23:18:33.7352 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 6caa22de-c2c1-4057-852a-08d527c832cf X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 92e84ceb-fbfd-47ab-be52-080c6b87953f X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB4PR07MB313 X-OriginatorOrg: ericsson.com X-IsSubscribed: yes |
Commit Message
Simon Marchi
Nov. 9, 2017, 11:18 p.m. UTC
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(-)
Comments
> From: Simon Marchi <simon.marchi@ericsson.com> > CC: Simon Marchi <simon.marchi@ericsson.com> > Date: Thu, 9 Nov 2017 18:18:22 -0500 > > gdb/doc/ChangeLog: > > * gdb.texinfo (Memory Map Format): Update gdb-memory-map.dtd. It's technically a documentation patch, but I don't think I have anything intelligent to say about it. Would someone else please review this in my stead? Texinfo-wise, there are no problems in the patch.
On 2017-11-10 03:01, Eli Zaretskii wrote: >> From: Simon Marchi <simon.marchi@ericsson.com> >> CC: Simon Marchi <simon.marchi@ericsson.com> >> Date: Thu, 9 Nov 2017 18:18:22 -0500 >> >> gdb/doc/ChangeLog: >> >> * gdb.texinfo (Memory Map Format): Update gdb-memory-map.dtd. > > It's technically a documentation patch, but I don't think I have > anything intelligent to say about it. Would someone else please > review this in my stead? > > Texinfo-wise, there are no problems in the patch. Thanks for taking a look. Simon
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: > <!-- .................................... .............. --> > <!-- 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 > 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
> 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? I can absolutely do that. But I'm wondering whether we might just want to delete the file instead? Why keep a copy on the website? I couldn't find a reference to it anywhere in any of the webpages...
On 2017-11-24 16:30, Joel Brobecker wrote: >> 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? > > I can absolutely do that. But I'm wondering whether we might > just want to delete the file instead? Why keep a copy on > the website? I couldn't find a reference to it anywhere > in any of the webpages... The XML files that follow this dtd can point to it. For example, look at the example in the doc: https://sourceware.org/gdb/onlinedocs/gdb/Memory-Map-Format.html This allows a tool to validate that the XML respects the dtd, and XML editors can provide assistance when hand-writing it, giving auto-complete based on the possible options. Simon
> The XML files that follow this dtd can point to it. For example, look at > the example in the doc: > > https://sourceware.org/gdb/onlinedocs/gdb/Memory-Map-Format.html > > This allows a tool to validate that the XML respects the dtd, and XML > editors can provide assistance when hand-writing it, giving auto-complete > based on the possible options. Thanks for explaining. I can update the file. Would you like me to do it now, or should I wait for your patch to get in first?
On 2017-11-24 04:57 PM, Joel Brobecker wrote: >> The XML files that follow this dtd can point to it. For example, look at >> the example in the doc: >> >> https://sourceware.org/gdb/onlinedocs/gdb/Memory-Map-Format.html >> >> This allows a tool to validate that the XML respects the dtd, and XML >> editors can provide assistance when hand-writing it, giving auto-complete >> based on the possible options. > > Thanks for explaining. I can update the file. Would you like me > to do it now, or should I wait for your patch to get in first? I was hoping to have at least someone with a reasonable level of confidence the dtd changes, but I guess if it hasn't happened by now it won't happen :) I tested the file by validating various files with xmllint, and by editing them in the Eclipse XML editor, so I'm fairly confident that it's ok. I pushed it just now, but comments are still welcome. So yes, you can updated the file online now. Thanks a lot! Simon
> So yes, you can updated the file online now. Thanks a lot!
Sure thing. Done!
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: <!-- .................................... .............. --> <!-- 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