gdb/
2006-09-21 Vladimir Prus <vladimir@codesourcery.com>
Daniel Jacobowitz <dan@codesourcery.com>
Nathan Sidwell <nathan@codesourcery.com>
* Makefile.in (SFILES): Add memory-map.c and xml-support.c.
(memory_map_h, xml_support_h): New.
(target_h): Add vec_h dependency.
(COMMON_OBS): Add memory-map.o and xml-support.o.
(memory-map.o, xml-support.o): New rules.
(remote.o): Update.
* exceptions.h (enum errors): Add XML_PARSE_ERROR.
* infcmd.c (run_command_1, attach_command): Call target_pre_inferior.
* memattr.c (default_mem_attrib): Initialize blocksize.
(target_mem_region_list, mem_use_target)
(target_mem_regions_valid, mem_region_cmp, mem_region_init)
(require_user_regions, require_target_regions)
(invalidate_target_mem_regions): New.
(create_mem_region): Use mem_region_init.
(mem_clear): Move higher.
(lookup_mem_region): Use require_target_regions.
(mem_command): Implement "mem auto".
(mem_info_command): Handle target-supplied regions and flash
attributes.
(mem_enable_command, mem_disable_command, mem_delete_command): Use
require_user_regions.
(_initialize_mem): Mention "mem auto" in help.
* memattr.h (enum mem_access_mode): Add MEM_FLASH.
(struct mem_attrib): Add blocksize.
(invalidate_target_mem_regions, mem_region_init, mem_region_cmp): New
prototypes.
* remote.c: Include "memory-map.h".
(PACKET_qXfer_memory_map): New enum value.
(remote_protocol_features): Add qXfer:memory-map:read.
(remote_xfer_partial): Handle memory maps.
(remote_memory_map): New.
(init_remote_ops, init_remote_async_ops): Set to_memory_map.
(_initialize_remote): Register qXfer:memory-map:read.
* target.c (update_current_target): Mention to_memory_map.
(target_memory_map, target_pre_inferior): New.
(target_preopen): Call target_pre_inferior.
* target.h: Include "vec.h".
(enum target_object): Add TARGET_OBJECT_MEMORY_MAP.
(struct target_ops): Add to_memory_map.
(target_memory_map, target_pre_inferior): New prototypes.
* memory-map.c, memory-map.h, xml-support.c, xml-support.h: New files.
gdb/doc/
2006-09-21 Vladimir Prus <vladimir@codesourcery.com>
Daniel Jacobowitz <dan@codesourcery.com>
* gdb.texinfo (Memory Region Attributes): Mention target-supplied
memory regions and "mem auto".
2006-09-21 15:54:03 +02:00
|
|
|
/* Helper routines for parsing XML using Expat.
|
|
|
|
|
2007-01-09 18:59:20 +01:00
|
|
|
Copyright (C) 2006, 2007 Free Software Foundation, Inc.
|
gdb/
2006-09-21 Vladimir Prus <vladimir@codesourcery.com>
Daniel Jacobowitz <dan@codesourcery.com>
Nathan Sidwell <nathan@codesourcery.com>
* Makefile.in (SFILES): Add memory-map.c and xml-support.c.
(memory_map_h, xml_support_h): New.
(target_h): Add vec_h dependency.
(COMMON_OBS): Add memory-map.o and xml-support.o.
(memory-map.o, xml-support.o): New rules.
(remote.o): Update.
* exceptions.h (enum errors): Add XML_PARSE_ERROR.
* infcmd.c (run_command_1, attach_command): Call target_pre_inferior.
* memattr.c (default_mem_attrib): Initialize blocksize.
(target_mem_region_list, mem_use_target)
(target_mem_regions_valid, mem_region_cmp, mem_region_init)
(require_user_regions, require_target_regions)
(invalidate_target_mem_regions): New.
(create_mem_region): Use mem_region_init.
(mem_clear): Move higher.
(lookup_mem_region): Use require_target_regions.
(mem_command): Implement "mem auto".
(mem_info_command): Handle target-supplied regions and flash
attributes.
(mem_enable_command, mem_disable_command, mem_delete_command): Use
require_user_regions.
(_initialize_mem): Mention "mem auto" in help.
* memattr.h (enum mem_access_mode): Add MEM_FLASH.
(struct mem_attrib): Add blocksize.
(invalidate_target_mem_regions, mem_region_init, mem_region_cmp): New
prototypes.
* remote.c: Include "memory-map.h".
(PACKET_qXfer_memory_map): New enum value.
(remote_protocol_features): Add qXfer:memory-map:read.
(remote_xfer_partial): Handle memory maps.
(remote_memory_map): New.
(init_remote_ops, init_remote_async_ops): Set to_memory_map.
(_initialize_remote): Register qXfer:memory-map:read.
* target.c (update_current_target): Mention to_memory_map.
(target_memory_map, target_pre_inferior): New.
(target_preopen): Call target_pre_inferior.
* target.h: Include "vec.h".
(enum target_object): Add TARGET_OBJECT_MEMORY_MAP.
(struct target_ops): Add to_memory_map.
(target_memory_map, target_pre_inferior): New prototypes.
* memory-map.c, memory-map.h, xml-support.c, xml-support.h: New files.
gdb/doc/
2006-09-21 Vladimir Prus <vladimir@codesourcery.com>
Daniel Jacobowitz <dan@codesourcery.com>
* gdb.texinfo (Memory Region Attributes): Mention target-supplied
memory regions and "mem auto".
2006-09-21 15:54:03 +02:00
|
|
|
|
|
|
|
This file is part of GDB.
|
|
|
|
|
|
|
|
This program is free software; you can redistribute it and/or modify
|
|
|
|
it under the terms of the GNU General Public License as published by
|
2007-08-23 20:08:50 +02:00
|
|
|
the Free Software Foundation; either version 3 of the License, or
|
gdb/
2006-09-21 Vladimir Prus <vladimir@codesourcery.com>
Daniel Jacobowitz <dan@codesourcery.com>
Nathan Sidwell <nathan@codesourcery.com>
* Makefile.in (SFILES): Add memory-map.c and xml-support.c.
(memory_map_h, xml_support_h): New.
(target_h): Add vec_h dependency.
(COMMON_OBS): Add memory-map.o and xml-support.o.
(memory-map.o, xml-support.o): New rules.
(remote.o): Update.
* exceptions.h (enum errors): Add XML_PARSE_ERROR.
* infcmd.c (run_command_1, attach_command): Call target_pre_inferior.
* memattr.c (default_mem_attrib): Initialize blocksize.
(target_mem_region_list, mem_use_target)
(target_mem_regions_valid, mem_region_cmp, mem_region_init)
(require_user_regions, require_target_regions)
(invalidate_target_mem_regions): New.
(create_mem_region): Use mem_region_init.
(mem_clear): Move higher.
(lookup_mem_region): Use require_target_regions.
(mem_command): Implement "mem auto".
(mem_info_command): Handle target-supplied regions and flash
attributes.
(mem_enable_command, mem_disable_command, mem_delete_command): Use
require_user_regions.
(_initialize_mem): Mention "mem auto" in help.
* memattr.h (enum mem_access_mode): Add MEM_FLASH.
(struct mem_attrib): Add blocksize.
(invalidate_target_mem_regions, mem_region_init, mem_region_cmp): New
prototypes.
* remote.c: Include "memory-map.h".
(PACKET_qXfer_memory_map): New enum value.
(remote_protocol_features): Add qXfer:memory-map:read.
(remote_xfer_partial): Handle memory maps.
(remote_memory_map): New.
(init_remote_ops, init_remote_async_ops): Set to_memory_map.
(_initialize_remote): Register qXfer:memory-map:read.
* target.c (update_current_target): Mention to_memory_map.
(target_memory_map, target_pre_inferior): New.
(target_preopen): Call target_pre_inferior.
* target.h: Include "vec.h".
(enum target_object): Add TARGET_OBJECT_MEMORY_MAP.
(struct target_ops): Add to_memory_map.
(target_memory_map, target_pre_inferior): New prototypes.
* memory-map.c, memory-map.h, xml-support.c, xml-support.h: New files.
gdb/doc/
2006-09-21 Vladimir Prus <vladimir@codesourcery.com>
Daniel Jacobowitz <dan@codesourcery.com>
* gdb.texinfo (Memory Region Attributes): Mention target-supplied
memory regions and "mem auto".
2006-09-21 15:54:03 +02:00
|
|
|
(at your option) any later version.
|
|
|
|
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
GNU General Public License for more details.
|
|
|
|
|
|
|
|
You should have received a copy of the GNU General Public License
|
2007-08-23 20:08:50 +02:00
|
|
|
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
gdb/
2006-09-21 Vladimir Prus <vladimir@codesourcery.com>
Daniel Jacobowitz <dan@codesourcery.com>
Nathan Sidwell <nathan@codesourcery.com>
* Makefile.in (SFILES): Add memory-map.c and xml-support.c.
(memory_map_h, xml_support_h): New.
(target_h): Add vec_h dependency.
(COMMON_OBS): Add memory-map.o and xml-support.o.
(memory-map.o, xml-support.o): New rules.
(remote.o): Update.
* exceptions.h (enum errors): Add XML_PARSE_ERROR.
* infcmd.c (run_command_1, attach_command): Call target_pre_inferior.
* memattr.c (default_mem_attrib): Initialize blocksize.
(target_mem_region_list, mem_use_target)
(target_mem_regions_valid, mem_region_cmp, mem_region_init)
(require_user_regions, require_target_regions)
(invalidate_target_mem_regions): New.
(create_mem_region): Use mem_region_init.
(mem_clear): Move higher.
(lookup_mem_region): Use require_target_regions.
(mem_command): Implement "mem auto".
(mem_info_command): Handle target-supplied regions and flash
attributes.
(mem_enable_command, mem_disable_command, mem_delete_command): Use
require_user_regions.
(_initialize_mem): Mention "mem auto" in help.
* memattr.h (enum mem_access_mode): Add MEM_FLASH.
(struct mem_attrib): Add blocksize.
(invalidate_target_mem_regions, mem_region_init, mem_region_cmp): New
prototypes.
* remote.c: Include "memory-map.h".
(PACKET_qXfer_memory_map): New enum value.
(remote_protocol_features): Add qXfer:memory-map:read.
(remote_xfer_partial): Handle memory maps.
(remote_memory_map): New.
(init_remote_ops, init_remote_async_ops): Set to_memory_map.
(_initialize_remote): Register qXfer:memory-map:read.
* target.c (update_current_target): Mention to_memory_map.
(target_memory_map, target_pre_inferior): New.
(target_preopen): Call target_pre_inferior.
* target.h: Include "vec.h".
(enum target_object): Add TARGET_OBJECT_MEMORY_MAP.
(struct target_ops): Add to_memory_map.
(target_memory_map, target_pre_inferior): New prototypes.
* memory-map.c, memory-map.h, xml-support.c, xml-support.h: New files.
gdb/doc/
2006-09-21 Vladimir Prus <vladimir@codesourcery.com>
Daniel Jacobowitz <dan@codesourcery.com>
* gdb.texinfo (Memory Region Attributes): Mention target-supplied
memory regions and "mem auto".
2006-09-21 15:54:03 +02:00
|
|
|
|
|
|
|
|
|
|
|
#ifndef XML_SUPPORT_H
|
|
|
|
#define XML_SUPPORT_H
|
|
|
|
|
* memory-map.c (struct_memory_map_parsing_data): Remove most
members. Make property_name an array.
(free_memory_map_parsing_data, memory_map_start_element)
(memory_map_end_element, memory_map_character_data): Delete.
(memory_map_start_memory, memory_map_end_memory)
(memory_map_start_property, memory_map_end_property): New functions.
(property_attributes, memory_children, memory_type_enum)
(memory_attributes, memory_map_children, memory_map_elements): New.
(parse_memory_map): Rewrite.
* xml-support.c (debug_xml): New.
(xml_get_required_attribute, xml_get_integer_attribute)
(xml_get_enum_value, free_xml_parser, make_cleanup_free_xml_parser):
Delete.
(struct scope_level, struct gdb_xml_parser, gdb_xml_body_text)
(gdb_xml_debug, gdb_xml_error, gdb_xml_values_cleanup)
(gdb_xml_start_element, gdb_xml_start_element_wrapper)
(gdb_xml_end_element, gdb_xml_end_element_wrapper, gdb_xml_cleanup)
(gdb_xml_create_parser_and_cleanup, gdb_xml_parse)
(gdb_xml_parse_ulongest, gdb_xml_parse_attr_ulongest)
(gdb_xml_parse_attr_enum, show_debug_xml, _initialize_xml_support):
New.
* xml-support.h (struct gdb_xml_value, gdb_xml_attribute_handler)
(enum gdb_xml_attribute_flag, struct gdb_xml_attribute)
(enum gdb_xml_element_flag, struct gdb_xml_element)
(gdb_xml_element_start_handler, gdb_xml_element_end_handler)
(struct gdb_xml_enum): New.
(gdb_xml_create_parser_and_cleanup, gdb_xml_parse, gdb_xml_debug)
(gdb_xml_error, gdb_xml_parse_attr_ulongest)
(gdb_xml_parse_attr_enum, gdb_xml_parse_ulongest): New prototypes.
(xml_get_required_attribute, xml_get_integer_attribute)
(xml_get_enum_value, make_cleanup_free_xml_parser): Delete prototypes.
* Makefile.in (xml_support_h, xml-support.o): Update.
* gdb.texinfo (Debugging Output): Document "set debug xml"
and "show debug xml".
2007-01-04 23:11:44 +01:00
|
|
|
#include "gdb_obstack.h"
|
|
|
|
#include "vec.h"
|
gdb/
2006-09-21 Vladimir Prus <vladimir@codesourcery.com>
Daniel Jacobowitz <dan@codesourcery.com>
Nathan Sidwell <nathan@codesourcery.com>
* Makefile.in (SFILES): Add memory-map.c and xml-support.c.
(memory_map_h, xml_support_h): New.
(target_h): Add vec_h dependency.
(COMMON_OBS): Add memory-map.o and xml-support.o.
(memory-map.o, xml-support.o): New rules.
(remote.o): Update.
* exceptions.h (enum errors): Add XML_PARSE_ERROR.
* infcmd.c (run_command_1, attach_command): Call target_pre_inferior.
* memattr.c (default_mem_attrib): Initialize blocksize.
(target_mem_region_list, mem_use_target)
(target_mem_regions_valid, mem_region_cmp, mem_region_init)
(require_user_regions, require_target_regions)
(invalidate_target_mem_regions): New.
(create_mem_region): Use mem_region_init.
(mem_clear): Move higher.
(lookup_mem_region): Use require_target_regions.
(mem_command): Implement "mem auto".
(mem_info_command): Handle target-supplied regions and flash
attributes.
(mem_enable_command, mem_disable_command, mem_delete_command): Use
require_user_regions.
(_initialize_mem): Mention "mem auto" in help.
* memattr.h (enum mem_access_mode): Add MEM_FLASH.
(struct mem_attrib): Add blocksize.
(invalidate_target_mem_regions, mem_region_init, mem_region_cmp): New
prototypes.
* remote.c: Include "memory-map.h".
(PACKET_qXfer_memory_map): New enum value.
(remote_protocol_features): Add qXfer:memory-map:read.
(remote_xfer_partial): Handle memory maps.
(remote_memory_map): New.
(init_remote_ops, init_remote_async_ops): Set to_memory_map.
(_initialize_remote): Register qXfer:memory-map:read.
* target.c (update_current_target): Mention to_memory_map.
(target_memory_map, target_pre_inferior): New.
(target_preopen): Call target_pre_inferior.
* target.h: Include "vec.h".
(enum target_object): Add TARGET_OBJECT_MEMORY_MAP.
(struct target_ops): Add to_memory_map.
(target_memory_map, target_pre_inferior): New prototypes.
* memory-map.c, memory-map.h, xml-support.c, xml-support.h: New files.
gdb/doc/
2006-09-21 Vladimir Prus <vladimir@codesourcery.com>
Daniel Jacobowitz <dan@codesourcery.com>
* gdb.texinfo (Memory Region Attributes): Mention target-supplied
memory regions and "mem auto".
2006-09-21 15:54:03 +02:00
|
|
|
|
* memory-map.c (struct_memory_map_parsing_data): Remove most
members. Make property_name an array.
(free_memory_map_parsing_data, memory_map_start_element)
(memory_map_end_element, memory_map_character_data): Delete.
(memory_map_start_memory, memory_map_end_memory)
(memory_map_start_property, memory_map_end_property): New functions.
(property_attributes, memory_children, memory_type_enum)
(memory_attributes, memory_map_children, memory_map_elements): New.
(parse_memory_map): Rewrite.
* xml-support.c (debug_xml): New.
(xml_get_required_attribute, xml_get_integer_attribute)
(xml_get_enum_value, free_xml_parser, make_cleanup_free_xml_parser):
Delete.
(struct scope_level, struct gdb_xml_parser, gdb_xml_body_text)
(gdb_xml_debug, gdb_xml_error, gdb_xml_values_cleanup)
(gdb_xml_start_element, gdb_xml_start_element_wrapper)
(gdb_xml_end_element, gdb_xml_end_element_wrapper, gdb_xml_cleanup)
(gdb_xml_create_parser_and_cleanup, gdb_xml_parse)
(gdb_xml_parse_ulongest, gdb_xml_parse_attr_ulongest)
(gdb_xml_parse_attr_enum, show_debug_xml, _initialize_xml_support):
New.
* xml-support.h (struct gdb_xml_value, gdb_xml_attribute_handler)
(enum gdb_xml_attribute_flag, struct gdb_xml_attribute)
(enum gdb_xml_element_flag, struct gdb_xml_element)
(gdb_xml_element_start_handler, gdb_xml_element_end_handler)
(struct gdb_xml_enum): New.
(gdb_xml_create_parser_and_cleanup, gdb_xml_parse, gdb_xml_debug)
(gdb_xml_error, gdb_xml_parse_attr_ulongest)
(gdb_xml_parse_attr_enum, gdb_xml_parse_ulongest): New prototypes.
(xml_get_required_attribute, xml_get_integer_attribute)
(xml_get_enum_value, make_cleanup_free_xml_parser): Delete prototypes.
* Makefile.in (xml_support_h, xml-support.o): Update.
* gdb.texinfo (Debugging Output): Document "set debug xml"
and "show debug xml".
2007-01-04 23:11:44 +01:00
|
|
|
struct gdb_xml_parser;
|
|
|
|
struct gdb_xml_element;
|
|
|
|
struct gdb_xml_attribute;
|
gdb/
2006-09-21 Vladimir Prus <vladimir@codesourcery.com>
Daniel Jacobowitz <dan@codesourcery.com>
Nathan Sidwell <nathan@codesourcery.com>
* Makefile.in (SFILES): Add memory-map.c and xml-support.c.
(memory_map_h, xml_support_h): New.
(target_h): Add vec_h dependency.
(COMMON_OBS): Add memory-map.o and xml-support.o.
(memory-map.o, xml-support.o): New rules.
(remote.o): Update.
* exceptions.h (enum errors): Add XML_PARSE_ERROR.
* infcmd.c (run_command_1, attach_command): Call target_pre_inferior.
* memattr.c (default_mem_attrib): Initialize blocksize.
(target_mem_region_list, mem_use_target)
(target_mem_regions_valid, mem_region_cmp, mem_region_init)
(require_user_regions, require_target_regions)
(invalidate_target_mem_regions): New.
(create_mem_region): Use mem_region_init.
(mem_clear): Move higher.
(lookup_mem_region): Use require_target_regions.
(mem_command): Implement "mem auto".
(mem_info_command): Handle target-supplied regions and flash
attributes.
(mem_enable_command, mem_disable_command, mem_delete_command): Use
require_user_regions.
(_initialize_mem): Mention "mem auto" in help.
* memattr.h (enum mem_access_mode): Add MEM_FLASH.
(struct mem_attrib): Add blocksize.
(invalidate_target_mem_regions, mem_region_init, mem_region_cmp): New
prototypes.
* remote.c: Include "memory-map.h".
(PACKET_qXfer_memory_map): New enum value.
(remote_protocol_features): Add qXfer:memory-map:read.
(remote_xfer_partial): Handle memory maps.
(remote_memory_map): New.
(init_remote_ops, init_remote_async_ops): Set to_memory_map.
(_initialize_remote): Register qXfer:memory-map:read.
* target.c (update_current_target): Mention to_memory_map.
(target_memory_map, target_pre_inferior): New.
(target_preopen): Call target_pre_inferior.
* target.h: Include "vec.h".
(enum target_object): Add TARGET_OBJECT_MEMORY_MAP.
(struct target_ops): Add to_memory_map.
(target_memory_map, target_pre_inferior): New prototypes.
* memory-map.c, memory-map.h, xml-support.c, xml-support.h: New files.
gdb/doc/
2006-09-21 Vladimir Prus <vladimir@codesourcery.com>
Daniel Jacobowitz <dan@codesourcery.com>
* gdb.texinfo (Memory Region Attributes): Mention target-supplied
memory regions and "mem auto".
2006-09-21 15:54:03 +02:00
|
|
|
|
* Makefile.in (XMLFILES): New.
(COMMON_OBS): Add xml-builtin.o.
(xml-builtin.c, stamp-xml): New rules.
(xml-tdesc.o): Update.
* features/feature_to_c.sh: New file.
* xml-support.c (MAX_XINCLUDE_DEPTH): Define.
(struct gdb_xml_parser): Add dtd_name and is_xinclude.
(gdb_xml_start_element): Initialize scope after possibly reallocating
scopes. Move cleanup later. Handle the XInclude description
specially.
(gdb_xml_end_element): Only parse the body if there is a current element.
Call XML_DefaultCurrent if there is no element.
(gdb_xml_fetch_external_entity, gdb_xml_use_dtd): New.
(struct xinclude_parsing_data, xinclude_start_include)
(xinclude_end_include, xml_xinclude_default)
(xml_xinclude_start_doctype, xml_xinclude_end_doctype)
(xml_xinclude_xml_decl, xml_xinclude_cleanup, xinclude_attributes)
(xinclude_elements, xml_process_xincludes, fetch_xml_builtin): New.
* xml-support.h (xml_fetch_another, xml_process_xincludes)
(fetch_xml_builtin, xml_builtin, gdb_xml_use_dtd): New declarations.
* xml-tdesc.c (tdesc_parse_xml): Add fetcher_baton argument. Expand
XInclude directives. Use the compiled in DTD.
(fetch_xml_from_file): Add baton argument. Treat it as a containing
directory name. Do not warn here.
(file_read_description_xml): Update call. Warn here instead. Pass
a dirname as baton.
(fetch_available_features_from_target): New.
(target_read_description_xml): Use it.
* features/gdb-target.dtd: Add copyright notice. Use xinclude.dtd
to handle XInclude.
* features/xinclude.dtd: New file.
* gdb.xml/bad-include.xml, gdb.xml/inc-2.xml, gdb.xml/inc-body.xml,
gdb.xml/includes.xml, gdb.xml/tdesc-xinclude.exp: New files.
* gdb.texinfo (Target Description Format): Add section on XInclude.
2007-02-07 23:48:06 +01:00
|
|
|
/* Return an XML document which was compiled into GDB, from
|
|
|
|
the given FILENAME, or NULL if the file was not compiled in. */
|
|
|
|
|
|
|
|
const char *fetch_xml_builtin (const char *filename);
|
|
|
|
|
2007-02-26 20:20:21 +01:00
|
|
|
/* A to_xfer_partial helper function which reads XML files which were
|
|
|
|
compiled into GDB. The target may call this function from its own
|
|
|
|
to_xfer_partial handler, after converting object and annex to the
|
|
|
|
appropriate filename. */
|
|
|
|
|
|
|
|
LONGEST xml_builtin_xfer_partial (const char *filename,
|
|
|
|
gdb_byte *readbuf, const gdb_byte *writebuf,
|
|
|
|
ULONGEST offset, LONGEST len);
|
|
|
|
|
* Makefile.in (XMLFILES): New.
(COMMON_OBS): Add xml-builtin.o.
(xml-builtin.c, stamp-xml): New rules.
(xml-tdesc.o): Update.
* features/feature_to_c.sh: New file.
* xml-support.c (MAX_XINCLUDE_DEPTH): Define.
(struct gdb_xml_parser): Add dtd_name and is_xinclude.
(gdb_xml_start_element): Initialize scope after possibly reallocating
scopes. Move cleanup later. Handle the XInclude description
specially.
(gdb_xml_end_element): Only parse the body if there is a current element.
Call XML_DefaultCurrent if there is no element.
(gdb_xml_fetch_external_entity, gdb_xml_use_dtd): New.
(struct xinclude_parsing_data, xinclude_start_include)
(xinclude_end_include, xml_xinclude_default)
(xml_xinclude_start_doctype, xml_xinclude_end_doctype)
(xml_xinclude_xml_decl, xml_xinclude_cleanup, xinclude_attributes)
(xinclude_elements, xml_process_xincludes, fetch_xml_builtin): New.
* xml-support.h (xml_fetch_another, xml_process_xincludes)
(fetch_xml_builtin, xml_builtin, gdb_xml_use_dtd): New declarations.
* xml-tdesc.c (tdesc_parse_xml): Add fetcher_baton argument. Expand
XInclude directives. Use the compiled in DTD.
(fetch_xml_from_file): Add baton argument. Treat it as a containing
directory name. Do not warn here.
(file_read_description_xml): Update call. Warn here instead. Pass
a dirname as baton.
(fetch_available_features_from_target): New.
(target_read_description_xml): Use it.
* features/gdb-target.dtd: Add copyright notice. Use xinclude.dtd
to handle XInclude.
* features/xinclude.dtd: New file.
* gdb.xml/bad-include.xml, gdb.xml/inc-2.xml, gdb.xml/inc-body.xml,
gdb.xml/includes.xml, gdb.xml/tdesc-xinclude.exp: New files.
* gdb.texinfo (Target Description Format): Add section on XInclude.
2007-02-07 23:48:06 +01:00
|
|
|
/* The text of compiled-in XML documents, from xml-builtin.c
|
|
|
|
(generated). */
|
2007-09-04 01:06:35 +02:00
|
|
|
|
* Makefile.in (XMLFILES): New.
(COMMON_OBS): Add xml-builtin.o.
(xml-builtin.c, stamp-xml): New rules.
(xml-tdesc.o): Update.
* features/feature_to_c.sh: New file.
* xml-support.c (MAX_XINCLUDE_DEPTH): Define.
(struct gdb_xml_parser): Add dtd_name and is_xinclude.
(gdb_xml_start_element): Initialize scope after possibly reallocating
scopes. Move cleanup later. Handle the XInclude description
specially.
(gdb_xml_end_element): Only parse the body if there is a current element.
Call XML_DefaultCurrent if there is no element.
(gdb_xml_fetch_external_entity, gdb_xml_use_dtd): New.
(struct xinclude_parsing_data, xinclude_start_include)
(xinclude_end_include, xml_xinclude_default)
(xml_xinclude_start_doctype, xml_xinclude_end_doctype)
(xml_xinclude_xml_decl, xml_xinclude_cleanup, xinclude_attributes)
(xinclude_elements, xml_process_xincludes, fetch_xml_builtin): New.
* xml-support.h (xml_fetch_another, xml_process_xincludes)
(fetch_xml_builtin, xml_builtin, gdb_xml_use_dtd): New declarations.
* xml-tdesc.c (tdesc_parse_xml): Add fetcher_baton argument. Expand
XInclude directives. Use the compiled in DTD.
(fetch_xml_from_file): Add baton argument. Treat it as a containing
directory name. Do not warn here.
(file_read_description_xml): Update call. Warn here instead. Pass
a dirname as baton.
(fetch_available_features_from_target): New.
(target_read_description_xml): Use it.
* features/gdb-target.dtd: Add copyright notice. Use xinclude.dtd
to handle XInclude.
* features/xinclude.dtd: New file.
* gdb.xml/bad-include.xml, gdb.xml/inc-2.xml, gdb.xml/inc-body.xml,
gdb.xml/includes.xml, gdb.xml/tdesc-xinclude.exp: New files.
* gdb.texinfo (Target Description Format): Add section on XInclude.
2007-02-07 23:48:06 +01:00
|
|
|
extern const char *xml_builtin[][2];
|
|
|
|
|
2007-09-04 01:06:35 +02:00
|
|
|
/* Return a malloc allocated string with special characters from TEXT
|
|
|
|
replaced by entity references. */
|
|
|
|
|
|
|
|
char *xml_escape_text (const char *text);
|
|
|
|
|
|
|
|
/* Support for XInclude. */
|
|
|
|
|
|
|
|
/* Callback to fetch a new XML file, based on the provided HREF. */
|
|
|
|
|
|
|
|
typedef char *(*xml_fetch_another) (const char *href, void *baton);
|
|
|
|
|
|
|
|
/* Return a new string which is the expansion of TEXT after processing
|
|
|
|
<xi:include> tags. FETCHER will be called (with FETCHER_BATON) to
|
|
|
|
retrieve any new files. DEPTH should be zero on the initial call.
|
|
|
|
|
|
|
|
On failure, this function uses NAME in a warning and returns NULL.
|
|
|
|
It may throw an exception, but does not for XML parsing
|
|
|
|
problems. */
|
|
|
|
|
|
|
|
char *xml_process_xincludes (const char *name, const char *text,
|
|
|
|
xml_fetch_another fetcher, void *fetcher_baton,
|
|
|
|
int depth);
|
|
|
|
|
* Makefile.in (XMLFILES): New.
(COMMON_OBS): Add xml-builtin.o.
(xml-builtin.c, stamp-xml): New rules.
(xml-tdesc.o): Update.
* features/feature_to_c.sh: New file.
* xml-support.c (MAX_XINCLUDE_DEPTH): Define.
(struct gdb_xml_parser): Add dtd_name and is_xinclude.
(gdb_xml_start_element): Initialize scope after possibly reallocating
scopes. Move cleanup later. Handle the XInclude description
specially.
(gdb_xml_end_element): Only parse the body if there is a current element.
Call XML_DefaultCurrent if there is no element.
(gdb_xml_fetch_external_entity, gdb_xml_use_dtd): New.
(struct xinclude_parsing_data, xinclude_start_include)
(xinclude_end_include, xml_xinclude_default)
(xml_xinclude_start_doctype, xml_xinclude_end_doctype)
(xml_xinclude_xml_decl, xml_xinclude_cleanup, xinclude_attributes)
(xinclude_elements, xml_process_xincludes, fetch_xml_builtin): New.
* xml-support.h (xml_fetch_another, xml_process_xincludes)
(fetch_xml_builtin, xml_builtin, gdb_xml_use_dtd): New declarations.
* xml-tdesc.c (tdesc_parse_xml): Add fetcher_baton argument. Expand
XInclude directives. Use the compiled in DTD.
(fetch_xml_from_file): Add baton argument. Treat it as a containing
directory name. Do not warn here.
(file_read_description_xml): Update call. Warn here instead. Pass
a dirname as baton.
(fetch_available_features_from_target): New.
(target_read_description_xml): Use it.
* features/gdb-target.dtd: Add copyright notice. Use xinclude.dtd
to handle XInclude.
* features/xinclude.dtd: New file.
* gdb.xml/bad-include.xml, gdb.xml/inc-2.xml, gdb.xml/inc-body.xml,
gdb.xml/includes.xml, gdb.xml/tdesc-xinclude.exp: New files.
* gdb.texinfo (Target Description Format): Add section on XInclude.
2007-02-07 23:48:06 +01:00
|
|
|
/* Simplified XML parser infrastructure. */
|
|
|
|
|
* memory-map.c (struct_memory_map_parsing_data): Remove most
members. Make property_name an array.
(free_memory_map_parsing_data, memory_map_start_element)
(memory_map_end_element, memory_map_character_data): Delete.
(memory_map_start_memory, memory_map_end_memory)
(memory_map_start_property, memory_map_end_property): New functions.
(property_attributes, memory_children, memory_type_enum)
(memory_attributes, memory_map_children, memory_map_elements): New.
(parse_memory_map): Rewrite.
* xml-support.c (debug_xml): New.
(xml_get_required_attribute, xml_get_integer_attribute)
(xml_get_enum_value, free_xml_parser, make_cleanup_free_xml_parser):
Delete.
(struct scope_level, struct gdb_xml_parser, gdb_xml_body_text)
(gdb_xml_debug, gdb_xml_error, gdb_xml_values_cleanup)
(gdb_xml_start_element, gdb_xml_start_element_wrapper)
(gdb_xml_end_element, gdb_xml_end_element_wrapper, gdb_xml_cleanup)
(gdb_xml_create_parser_and_cleanup, gdb_xml_parse)
(gdb_xml_parse_ulongest, gdb_xml_parse_attr_ulongest)
(gdb_xml_parse_attr_enum, show_debug_xml, _initialize_xml_support):
New.
* xml-support.h (struct gdb_xml_value, gdb_xml_attribute_handler)
(enum gdb_xml_attribute_flag, struct gdb_xml_attribute)
(enum gdb_xml_element_flag, struct gdb_xml_element)
(gdb_xml_element_start_handler, gdb_xml_element_end_handler)
(struct gdb_xml_enum): New.
(gdb_xml_create_parser_and_cleanup, gdb_xml_parse, gdb_xml_debug)
(gdb_xml_error, gdb_xml_parse_attr_ulongest)
(gdb_xml_parse_attr_enum, gdb_xml_parse_ulongest): New prototypes.
(xml_get_required_attribute, xml_get_integer_attribute)
(xml_get_enum_value, make_cleanup_free_xml_parser): Delete prototypes.
* Makefile.in (xml_support_h, xml-support.o): Update.
* gdb.texinfo (Debugging Output): Document "set debug xml"
and "show debug xml".
2007-01-04 23:11:44 +01:00
|
|
|
/* A name and value pair, used to record parsed attributes. */
|
gdb/
2006-09-21 Vladimir Prus <vladimir@codesourcery.com>
Daniel Jacobowitz <dan@codesourcery.com>
Nathan Sidwell <nathan@codesourcery.com>
* Makefile.in (SFILES): Add memory-map.c and xml-support.c.
(memory_map_h, xml_support_h): New.
(target_h): Add vec_h dependency.
(COMMON_OBS): Add memory-map.o and xml-support.o.
(memory-map.o, xml-support.o): New rules.
(remote.o): Update.
* exceptions.h (enum errors): Add XML_PARSE_ERROR.
* infcmd.c (run_command_1, attach_command): Call target_pre_inferior.
* memattr.c (default_mem_attrib): Initialize blocksize.
(target_mem_region_list, mem_use_target)
(target_mem_regions_valid, mem_region_cmp, mem_region_init)
(require_user_regions, require_target_regions)
(invalidate_target_mem_regions): New.
(create_mem_region): Use mem_region_init.
(mem_clear): Move higher.
(lookup_mem_region): Use require_target_regions.
(mem_command): Implement "mem auto".
(mem_info_command): Handle target-supplied regions and flash
attributes.
(mem_enable_command, mem_disable_command, mem_delete_command): Use
require_user_regions.
(_initialize_mem): Mention "mem auto" in help.
* memattr.h (enum mem_access_mode): Add MEM_FLASH.
(struct mem_attrib): Add blocksize.
(invalidate_target_mem_regions, mem_region_init, mem_region_cmp): New
prototypes.
* remote.c: Include "memory-map.h".
(PACKET_qXfer_memory_map): New enum value.
(remote_protocol_features): Add qXfer:memory-map:read.
(remote_xfer_partial): Handle memory maps.
(remote_memory_map): New.
(init_remote_ops, init_remote_async_ops): Set to_memory_map.
(_initialize_remote): Register qXfer:memory-map:read.
* target.c (update_current_target): Mention to_memory_map.
(target_memory_map, target_pre_inferior): New.
(target_preopen): Call target_pre_inferior.
* target.h: Include "vec.h".
(enum target_object): Add TARGET_OBJECT_MEMORY_MAP.
(struct target_ops): Add to_memory_map.
(target_memory_map, target_pre_inferior): New prototypes.
* memory-map.c, memory-map.h, xml-support.c, xml-support.h: New files.
gdb/doc/
2006-09-21 Vladimir Prus <vladimir@codesourcery.com>
Daniel Jacobowitz <dan@codesourcery.com>
* gdb.texinfo (Memory Region Attributes): Mention target-supplied
memory regions and "mem auto".
2006-09-21 15:54:03 +02:00
|
|
|
|
* memory-map.c (struct_memory_map_parsing_data): Remove most
members. Make property_name an array.
(free_memory_map_parsing_data, memory_map_start_element)
(memory_map_end_element, memory_map_character_data): Delete.
(memory_map_start_memory, memory_map_end_memory)
(memory_map_start_property, memory_map_end_property): New functions.
(property_attributes, memory_children, memory_type_enum)
(memory_attributes, memory_map_children, memory_map_elements): New.
(parse_memory_map): Rewrite.
* xml-support.c (debug_xml): New.
(xml_get_required_attribute, xml_get_integer_attribute)
(xml_get_enum_value, free_xml_parser, make_cleanup_free_xml_parser):
Delete.
(struct scope_level, struct gdb_xml_parser, gdb_xml_body_text)
(gdb_xml_debug, gdb_xml_error, gdb_xml_values_cleanup)
(gdb_xml_start_element, gdb_xml_start_element_wrapper)
(gdb_xml_end_element, gdb_xml_end_element_wrapper, gdb_xml_cleanup)
(gdb_xml_create_parser_and_cleanup, gdb_xml_parse)
(gdb_xml_parse_ulongest, gdb_xml_parse_attr_ulongest)
(gdb_xml_parse_attr_enum, show_debug_xml, _initialize_xml_support):
New.
* xml-support.h (struct gdb_xml_value, gdb_xml_attribute_handler)
(enum gdb_xml_attribute_flag, struct gdb_xml_attribute)
(enum gdb_xml_element_flag, struct gdb_xml_element)
(gdb_xml_element_start_handler, gdb_xml_element_end_handler)
(struct gdb_xml_enum): New.
(gdb_xml_create_parser_and_cleanup, gdb_xml_parse, gdb_xml_debug)
(gdb_xml_error, gdb_xml_parse_attr_ulongest)
(gdb_xml_parse_attr_enum, gdb_xml_parse_ulongest): New prototypes.
(xml_get_required_attribute, xml_get_integer_attribute)
(xml_get_enum_value, make_cleanup_free_xml_parser): Delete prototypes.
* Makefile.in (xml_support_h, xml-support.o): Update.
* gdb.texinfo (Debugging Output): Document "set debug xml"
and "show debug xml".
2007-01-04 23:11:44 +01:00
|
|
|
struct gdb_xml_value
|
|
|
|
{
|
|
|
|
const char *name;
|
|
|
|
void *value;
|
|
|
|
};
|
|
|
|
typedef struct gdb_xml_value gdb_xml_value_s;
|
|
|
|
DEF_VEC_O(gdb_xml_value_s);
|
gdb/
2006-09-21 Vladimir Prus <vladimir@codesourcery.com>
Daniel Jacobowitz <dan@codesourcery.com>
Nathan Sidwell <nathan@codesourcery.com>
* Makefile.in (SFILES): Add memory-map.c and xml-support.c.
(memory_map_h, xml_support_h): New.
(target_h): Add vec_h dependency.
(COMMON_OBS): Add memory-map.o and xml-support.o.
(memory-map.o, xml-support.o): New rules.
(remote.o): Update.
* exceptions.h (enum errors): Add XML_PARSE_ERROR.
* infcmd.c (run_command_1, attach_command): Call target_pre_inferior.
* memattr.c (default_mem_attrib): Initialize blocksize.
(target_mem_region_list, mem_use_target)
(target_mem_regions_valid, mem_region_cmp, mem_region_init)
(require_user_regions, require_target_regions)
(invalidate_target_mem_regions): New.
(create_mem_region): Use mem_region_init.
(mem_clear): Move higher.
(lookup_mem_region): Use require_target_regions.
(mem_command): Implement "mem auto".
(mem_info_command): Handle target-supplied regions and flash
attributes.
(mem_enable_command, mem_disable_command, mem_delete_command): Use
require_user_regions.
(_initialize_mem): Mention "mem auto" in help.
* memattr.h (enum mem_access_mode): Add MEM_FLASH.
(struct mem_attrib): Add blocksize.
(invalidate_target_mem_regions, mem_region_init, mem_region_cmp): New
prototypes.
* remote.c: Include "memory-map.h".
(PACKET_qXfer_memory_map): New enum value.
(remote_protocol_features): Add qXfer:memory-map:read.
(remote_xfer_partial): Handle memory maps.
(remote_memory_map): New.
(init_remote_ops, init_remote_async_ops): Set to_memory_map.
(_initialize_remote): Register qXfer:memory-map:read.
* target.c (update_current_target): Mention to_memory_map.
(target_memory_map, target_pre_inferior): New.
(target_preopen): Call target_pre_inferior.
* target.h: Include "vec.h".
(enum target_object): Add TARGET_OBJECT_MEMORY_MAP.
(struct target_ops): Add to_memory_map.
(target_memory_map, target_pre_inferior): New prototypes.
* memory-map.c, memory-map.h, xml-support.c, xml-support.h: New files.
gdb/doc/
2006-09-21 Vladimir Prus <vladimir@codesourcery.com>
Daniel Jacobowitz <dan@codesourcery.com>
* gdb.texinfo (Memory Region Attributes): Mention target-supplied
memory regions and "mem auto".
2006-09-21 15:54:03 +02:00
|
|
|
|
* memory-map.c (struct_memory_map_parsing_data): Remove most
members. Make property_name an array.
(free_memory_map_parsing_data, memory_map_start_element)
(memory_map_end_element, memory_map_character_data): Delete.
(memory_map_start_memory, memory_map_end_memory)
(memory_map_start_property, memory_map_end_property): New functions.
(property_attributes, memory_children, memory_type_enum)
(memory_attributes, memory_map_children, memory_map_elements): New.
(parse_memory_map): Rewrite.
* xml-support.c (debug_xml): New.
(xml_get_required_attribute, xml_get_integer_attribute)
(xml_get_enum_value, free_xml_parser, make_cleanup_free_xml_parser):
Delete.
(struct scope_level, struct gdb_xml_parser, gdb_xml_body_text)
(gdb_xml_debug, gdb_xml_error, gdb_xml_values_cleanup)
(gdb_xml_start_element, gdb_xml_start_element_wrapper)
(gdb_xml_end_element, gdb_xml_end_element_wrapper, gdb_xml_cleanup)
(gdb_xml_create_parser_and_cleanup, gdb_xml_parse)
(gdb_xml_parse_ulongest, gdb_xml_parse_attr_ulongest)
(gdb_xml_parse_attr_enum, show_debug_xml, _initialize_xml_support):
New.
* xml-support.h (struct gdb_xml_value, gdb_xml_attribute_handler)
(enum gdb_xml_attribute_flag, struct gdb_xml_attribute)
(enum gdb_xml_element_flag, struct gdb_xml_element)
(gdb_xml_element_start_handler, gdb_xml_element_end_handler)
(struct gdb_xml_enum): New.
(gdb_xml_create_parser_and_cleanup, gdb_xml_parse, gdb_xml_debug)
(gdb_xml_error, gdb_xml_parse_attr_ulongest)
(gdb_xml_parse_attr_enum, gdb_xml_parse_ulongest): New prototypes.
(xml_get_required_attribute, xml_get_integer_attribute)
(xml_get_enum_value, make_cleanup_free_xml_parser): Delete prototypes.
* Makefile.in (xml_support_h, xml-support.o): Update.
* gdb.texinfo (Debugging Output): Document "set debug xml"
and "show debug xml".
2007-01-04 23:11:44 +01:00
|
|
|
/* The type of an attribute handler.
|
gdb/
2006-09-21 Vladimir Prus <vladimir@codesourcery.com>
Daniel Jacobowitz <dan@codesourcery.com>
Nathan Sidwell <nathan@codesourcery.com>
* Makefile.in (SFILES): Add memory-map.c and xml-support.c.
(memory_map_h, xml_support_h): New.
(target_h): Add vec_h dependency.
(COMMON_OBS): Add memory-map.o and xml-support.o.
(memory-map.o, xml-support.o): New rules.
(remote.o): Update.
* exceptions.h (enum errors): Add XML_PARSE_ERROR.
* infcmd.c (run_command_1, attach_command): Call target_pre_inferior.
* memattr.c (default_mem_attrib): Initialize blocksize.
(target_mem_region_list, mem_use_target)
(target_mem_regions_valid, mem_region_cmp, mem_region_init)
(require_user_regions, require_target_regions)
(invalidate_target_mem_regions): New.
(create_mem_region): Use mem_region_init.
(mem_clear): Move higher.
(lookup_mem_region): Use require_target_regions.
(mem_command): Implement "mem auto".
(mem_info_command): Handle target-supplied regions and flash
attributes.
(mem_enable_command, mem_disable_command, mem_delete_command): Use
require_user_regions.
(_initialize_mem): Mention "mem auto" in help.
* memattr.h (enum mem_access_mode): Add MEM_FLASH.
(struct mem_attrib): Add blocksize.
(invalidate_target_mem_regions, mem_region_init, mem_region_cmp): New
prototypes.
* remote.c: Include "memory-map.h".
(PACKET_qXfer_memory_map): New enum value.
(remote_protocol_features): Add qXfer:memory-map:read.
(remote_xfer_partial): Handle memory maps.
(remote_memory_map): New.
(init_remote_ops, init_remote_async_ops): Set to_memory_map.
(_initialize_remote): Register qXfer:memory-map:read.
* target.c (update_current_target): Mention to_memory_map.
(target_memory_map, target_pre_inferior): New.
(target_preopen): Call target_pre_inferior.
* target.h: Include "vec.h".
(enum target_object): Add TARGET_OBJECT_MEMORY_MAP.
(struct target_ops): Add to_memory_map.
(target_memory_map, target_pre_inferior): New prototypes.
* memory-map.c, memory-map.h, xml-support.c, xml-support.h: New files.
gdb/doc/
2006-09-21 Vladimir Prus <vladimir@codesourcery.com>
Daniel Jacobowitz <dan@codesourcery.com>
* gdb.texinfo (Memory Region Attributes): Mention target-supplied
memory regions and "mem auto".
2006-09-21 15:54:03 +02:00
|
|
|
|
* memory-map.c (struct_memory_map_parsing_data): Remove most
members. Make property_name an array.
(free_memory_map_parsing_data, memory_map_start_element)
(memory_map_end_element, memory_map_character_data): Delete.
(memory_map_start_memory, memory_map_end_memory)
(memory_map_start_property, memory_map_end_property): New functions.
(property_attributes, memory_children, memory_type_enum)
(memory_attributes, memory_map_children, memory_map_elements): New.
(parse_memory_map): Rewrite.
* xml-support.c (debug_xml): New.
(xml_get_required_attribute, xml_get_integer_attribute)
(xml_get_enum_value, free_xml_parser, make_cleanup_free_xml_parser):
Delete.
(struct scope_level, struct gdb_xml_parser, gdb_xml_body_text)
(gdb_xml_debug, gdb_xml_error, gdb_xml_values_cleanup)
(gdb_xml_start_element, gdb_xml_start_element_wrapper)
(gdb_xml_end_element, gdb_xml_end_element_wrapper, gdb_xml_cleanup)
(gdb_xml_create_parser_and_cleanup, gdb_xml_parse)
(gdb_xml_parse_ulongest, gdb_xml_parse_attr_ulongest)
(gdb_xml_parse_attr_enum, show_debug_xml, _initialize_xml_support):
New.
* xml-support.h (struct gdb_xml_value, gdb_xml_attribute_handler)
(enum gdb_xml_attribute_flag, struct gdb_xml_attribute)
(enum gdb_xml_element_flag, struct gdb_xml_element)
(gdb_xml_element_start_handler, gdb_xml_element_end_handler)
(struct gdb_xml_enum): New.
(gdb_xml_create_parser_and_cleanup, gdb_xml_parse, gdb_xml_debug)
(gdb_xml_error, gdb_xml_parse_attr_ulongest)
(gdb_xml_parse_attr_enum, gdb_xml_parse_ulongest): New prototypes.
(xml_get_required_attribute, xml_get_integer_attribute)
(xml_get_enum_value, make_cleanup_free_xml_parser): Delete prototypes.
* Makefile.in (xml_support_h, xml-support.o): Update.
* gdb.texinfo (Debugging Output): Document "set debug xml"
and "show debug xml".
2007-01-04 23:11:44 +01:00
|
|
|
PARSER is the current XML parser, which should be used to issue any
|
|
|
|
debugging or error messages. The second argument is the
|
|
|
|
corresponding attribute description, so that a single handler can
|
|
|
|
be used for multiple attributes; the attribute name is available
|
|
|
|
for error messages and the handler data is available for additional
|
|
|
|
customization (see gdb_xml_parse_attr_enum). VALUE is the string
|
|
|
|
value of the attribute.
|
|
|
|
|
|
|
|
The returned value should be freeable with xfree, and will be freed
|
|
|
|
after the start handler is called. Errors should be reported by
|
|
|
|
calling gdb_xml_error. */
|
|
|
|
|
|
|
|
typedef void *(gdb_xml_attribute_handler) (struct gdb_xml_parser *parser,
|
|
|
|
const struct gdb_xml_attribute *,
|
|
|
|
const char *value);
|
|
|
|
|
|
|
|
/* Flags for attributes. If no flags are specified, the attribute is
|
|
|
|
required. */
|
|
|
|
|
|
|
|
enum gdb_xml_attribute_flag
|
|
|
|
{
|
|
|
|
GDB_XML_AF_NONE,
|
|
|
|
GDB_XML_AF_OPTIONAL = 1 << 0, /* The attribute is optional. */
|
|
|
|
};
|
|
|
|
|
|
|
|
/* An expected attribute and the handler to call when it is
|
|
|
|
encountered. Arrays of struct gdb_xml_attribute are terminated
|
|
|
|
by an entry with NAME == NULL. */
|
|
|
|
|
|
|
|
struct gdb_xml_attribute
|
|
|
|
{
|
|
|
|
const char *name;
|
|
|
|
int flags;
|
|
|
|
gdb_xml_attribute_handler *handler;
|
|
|
|
const void *handler_data;
|
|
|
|
};
|
|
|
|
|
|
|
|
/* Flags for elements. If no flags are specified, the element is
|
|
|
|
required exactly once. */
|
|
|
|
|
|
|
|
enum gdb_xml_element_flag
|
|
|
|
{
|
|
|
|
GDB_XML_EF_NONE,
|
|
|
|
GDB_XML_EF_OPTIONAL = 1 << 0, /* The element is optional. */
|
|
|
|
GDB_XML_EF_REPEATABLE = 1 << 1, /* The element is repeatable. */
|
|
|
|
};
|
|
|
|
|
|
|
|
/* A handler called at the beginning of an element.
|
|
|
|
|
|
|
|
PARSER is the current XML parser, which should be used to issue any
|
|
|
|
debugging or error messages. ELEMENT is the current element.
|
|
|
|
USER_DATA is the opaque pointer supplied when the parser was
|
|
|
|
created. ATTRIBUTES is a vector of the values of any attributes
|
|
|
|
attached to this element.
|
|
|
|
|
|
|
|
The start handler will only be called if all the required
|
|
|
|
attributes were present and parsed successfully, and elements of
|
|
|
|
ATTRIBUTES are guaranteed to be in the same order used in
|
|
|
|
ELEMENT->ATTRIBUTES (not the order from the XML file). Accordingly
|
|
|
|
fixed offsets can be used to find any non-optional attributes as
|
|
|
|
long as no optional attributes precede them. */
|
|
|
|
|
|
|
|
typedef void (gdb_xml_element_start_handler)
|
|
|
|
(struct gdb_xml_parser *parser, const struct gdb_xml_element *element,
|
|
|
|
void *user_data, VEC(gdb_xml_value_s) *attributes);
|
|
|
|
|
|
|
|
/* A handler called at the end of an element.
|
|
|
|
|
|
|
|
PARSER, ELEMENT, and USER_DATA are as for the start handler. BODY
|
|
|
|
is any accumulated body text inside the element, with leading and
|
|
|
|
trailing whitespace removed. It will never be NULL. */
|
|
|
|
|
|
|
|
typedef void (gdb_xml_element_end_handler)
|
|
|
|
(struct gdb_xml_parser *, const struct gdb_xml_element *,
|
|
|
|
void *user_data, const char *body_text);
|
|
|
|
|
|
|
|
/* An expected element and the handlers to call when it is
|
|
|
|
encountered. Arrays of struct gdb_xml_element are terminated
|
|
|
|
by an entry with NAME == NULL. */
|
|
|
|
|
|
|
|
struct gdb_xml_element
|
|
|
|
{
|
|
|
|
const char *name;
|
|
|
|
const struct gdb_xml_attribute *attributes;
|
|
|
|
const struct gdb_xml_element *children;
|
|
|
|
int flags;
|
|
|
|
|
|
|
|
gdb_xml_element_start_handler *start_handler;
|
|
|
|
gdb_xml_element_end_handler *end_handler;
|
|
|
|
};
|
|
|
|
|
|
|
|
/* Initialize and return a parser. Register a cleanup to destroy the
|
|
|
|
parser. */
|
|
|
|
|
|
|
|
struct gdb_xml_parser *gdb_xml_create_parser_and_cleanup
|
|
|
|
(const char *name, const struct gdb_xml_element *elements,
|
|
|
|
void *user_data);
|
|
|
|
|
* Makefile.in (XMLFILES): New.
(COMMON_OBS): Add xml-builtin.o.
(xml-builtin.c, stamp-xml): New rules.
(xml-tdesc.o): Update.
* features/feature_to_c.sh: New file.
* xml-support.c (MAX_XINCLUDE_DEPTH): Define.
(struct gdb_xml_parser): Add dtd_name and is_xinclude.
(gdb_xml_start_element): Initialize scope after possibly reallocating
scopes. Move cleanup later. Handle the XInclude description
specially.
(gdb_xml_end_element): Only parse the body if there is a current element.
Call XML_DefaultCurrent if there is no element.
(gdb_xml_fetch_external_entity, gdb_xml_use_dtd): New.
(struct xinclude_parsing_data, xinclude_start_include)
(xinclude_end_include, xml_xinclude_default)
(xml_xinclude_start_doctype, xml_xinclude_end_doctype)
(xml_xinclude_xml_decl, xml_xinclude_cleanup, xinclude_attributes)
(xinclude_elements, xml_process_xincludes, fetch_xml_builtin): New.
* xml-support.h (xml_fetch_another, xml_process_xincludes)
(fetch_xml_builtin, xml_builtin, gdb_xml_use_dtd): New declarations.
* xml-tdesc.c (tdesc_parse_xml): Add fetcher_baton argument. Expand
XInclude directives. Use the compiled in DTD.
(fetch_xml_from_file): Add baton argument. Treat it as a containing
directory name. Do not warn here.
(file_read_description_xml): Update call. Warn here instead. Pass
a dirname as baton.
(fetch_available_features_from_target): New.
(target_read_description_xml): Use it.
* features/gdb-target.dtd: Add copyright notice. Use xinclude.dtd
to handle XInclude.
* features/xinclude.dtd: New file.
* gdb.xml/bad-include.xml, gdb.xml/inc-2.xml, gdb.xml/inc-body.xml,
gdb.xml/includes.xml, gdb.xml/tdesc-xinclude.exp: New files.
* gdb.texinfo (Target Description Format): Add section on XInclude.
2007-02-07 23:48:06 +01:00
|
|
|
/* Associate DTD_NAME, which must be the name of a compiled-in DTD,
|
|
|
|
with PARSER. */
|
|
|
|
|
|
|
|
void gdb_xml_use_dtd (struct gdb_xml_parser *parser, const char *dtd_name);
|
|
|
|
|
* memory-map.c (struct_memory_map_parsing_data): Remove most
members. Make property_name an array.
(free_memory_map_parsing_data, memory_map_start_element)
(memory_map_end_element, memory_map_character_data): Delete.
(memory_map_start_memory, memory_map_end_memory)
(memory_map_start_property, memory_map_end_property): New functions.
(property_attributes, memory_children, memory_type_enum)
(memory_attributes, memory_map_children, memory_map_elements): New.
(parse_memory_map): Rewrite.
* xml-support.c (debug_xml): New.
(xml_get_required_attribute, xml_get_integer_attribute)
(xml_get_enum_value, free_xml_parser, make_cleanup_free_xml_parser):
Delete.
(struct scope_level, struct gdb_xml_parser, gdb_xml_body_text)
(gdb_xml_debug, gdb_xml_error, gdb_xml_values_cleanup)
(gdb_xml_start_element, gdb_xml_start_element_wrapper)
(gdb_xml_end_element, gdb_xml_end_element_wrapper, gdb_xml_cleanup)
(gdb_xml_create_parser_and_cleanup, gdb_xml_parse)
(gdb_xml_parse_ulongest, gdb_xml_parse_attr_ulongest)
(gdb_xml_parse_attr_enum, show_debug_xml, _initialize_xml_support):
New.
* xml-support.h (struct gdb_xml_value, gdb_xml_attribute_handler)
(enum gdb_xml_attribute_flag, struct gdb_xml_attribute)
(enum gdb_xml_element_flag, struct gdb_xml_element)
(gdb_xml_element_start_handler, gdb_xml_element_end_handler)
(struct gdb_xml_enum): New.
(gdb_xml_create_parser_and_cleanup, gdb_xml_parse, gdb_xml_debug)
(gdb_xml_error, gdb_xml_parse_attr_ulongest)
(gdb_xml_parse_attr_enum, gdb_xml_parse_ulongest): New prototypes.
(xml_get_required_attribute, xml_get_integer_attribute)
(xml_get_enum_value, make_cleanup_free_xml_parser): Delete prototypes.
* Makefile.in (xml_support_h, xml-support.o): Update.
* gdb.texinfo (Debugging Output): Document "set debug xml"
and "show debug xml".
2007-01-04 23:11:44 +01:00
|
|
|
/* Invoke PARSER on BUFFER. BUFFER is the data to parse, which
|
|
|
|
should be NUL-terminated.
|
|
|
|
|
|
|
|
The return value is 0 for success or -1 for error. It may throw,
|
|
|
|
but only if something unexpected goes wrong during parsing; parse
|
|
|
|
errors will be caught, warned about, and reported as failure. */
|
|
|
|
|
|
|
|
int gdb_xml_parse (struct gdb_xml_parser *parser, const char *buffer);
|
|
|
|
|
|
|
|
/* Issue a debugging message from one of PARSER's handlers. */
|
|
|
|
|
|
|
|
void gdb_xml_debug (struct gdb_xml_parser *parser, const char *format, ...)
|
|
|
|
ATTR_FORMAT (printf, 2, 0);
|
|
|
|
|
|
|
|
/* Issue an error message from one of PARSER's handlers, and stop
|
|
|
|
parsing. */
|
|
|
|
|
|
|
|
void gdb_xml_error (struct gdb_xml_parser *parser, const char *format, ...)
|
|
|
|
ATTR_NORETURN ATTR_FORMAT (printf, 2, 0);
|
|
|
|
|
|
|
|
/* Parse an integer attribute into a ULONGEST. */
|
|
|
|
|
|
|
|
extern gdb_xml_attribute_handler gdb_xml_parse_attr_ulongest;
|
|
|
|
|
|
|
|
/* Map NAME to VALUE. A struct gdb_xml_enum * should be saved as the
|
|
|
|
value of handler_data when using gdb_xml_parse_attr_enum to parse a
|
|
|
|
fixed list of possible strings. The list is terminated by an entry
|
|
|
|
with NAME == NULL. */
|
|
|
|
|
|
|
|
struct gdb_xml_enum
|
|
|
|
{
|
|
|
|
const char *name;
|
|
|
|
ULONGEST value;
|
|
|
|
};
|
|
|
|
|
* Makefile.in (arm-tdep.o, eval.o, target-descriptions.o)
(xml-tdesc.o): Update.
* xml-support.c: Add a comment.
(gdb_xml_enums_boolean): New variable.
(gdb_xml_parse_attr_enum): Use strcasecmp.
* xml-support.h (gdb_xml_enums_boolean): Declare.
* xml-tdesc.c (struct tdesc_parsing_data): Record current_feature,
next_regnum, and current_union.
(tdesc_start_feature, tdesc_start_reg, tdesc_start_union)
(tdesc_end_union, tdesc_start_field, tdesc_start_vector)
(field_attributes, union_children, reg_attributes, union_attributes)
(vector_attributes, feature_attributes, feature_children): New.
(target_children): Make static. Add <feature>.
(tdesc_elements): Make static.
* target-descriptions.c (struct tdesc_reg, tdesc_reg_p, type_p)
(struct tdesc_feature, tdesc_feature_p): New types.
(struct target_desc): Add features member.
(struct tdesc_arch_data, tdesc_data): New.
(target_find_description): Clarify error message. Warn about
ignored register descriptions.
(tdesc_has_registers, tdesc_find_feature, tdesc_feature_name)
(tdesc_named_type, tdesc_data_init, tdesc_data_alloc)
(tdesc_data_cleanup, tdesc_numbered_register)
(tdesc_numbered_register_choices, tdesc_find_register)
(tdesc_register_name, tdesc_register_type)
(tdesc_remote_register_number, tdesc_register_reggroup_p)
(set_tdesc_pseudo_register_name, set_tdesc_pseudo_register_type)
(set_tdesc_pseudo_register_reggroup_p, tdesc_use_registers)
(tdesc_free_reg, tdesc_create_reg, tdesc_free_feature)
(tdesc_create_feature, tdesc_record_type): New.
(free_target_description): Free features.
(_initialize_target_descriptions): Initialize tdesc_data.
* arch-utils.c (default_remote_register_number): New.
* arch-utils.h (default_remote_register_number): New prototype.
* target-descriptions.h (set_tdesc_pseudo_register_name)
(set_tdesc_pseudo_register_type, set_tdesc_pseudo_register_reggroup_p)
(tdesc_use_registers, tdesc_data_alloc, tdesc_data_cleanup)
(tdesc_numbered_register, tdesc_numbered_register_choices)
(tdesc_has_registers, tdesc_find_feature, tdesc_feature_name)
(tdesc_named_type, tdesc_create_feature, tdesc_record_type)
(tdesc_create_reg): Declare.
* gdbarch.sh (remote_register_number): New entry.
* gdbarch.c, gdbarch.h: Regenerate.
* remote.c (init_remote_state): Use gdbarch_remote_register_number.
* features/gdb-target.dtd: Add feature, reg, vector, union, and field.
* arm-tdep.c (arm_register_aliases): New.
(arm_register_name_strings): Rename to...
(arm_register_names): ...this. Make const. Delete the old version.
(current_option, arm_register_byte): Delete.
(set_disassembly_style): Simplify. Do not adjust arm_register_names.
(value_of_arm_user_reg): New.
(arm_gdbarch_init): Verify any described registers. Call
tdesc_use_registers. Don't use arm_register_byte. Create aliases
for standard register names.
(_initialize_arm_tdep): Do not adjust arm_register_names.
* user-regs.c (struct user_reg): Add baton member.
(append_user_reg, user_reg_add_builtin, user_regs_init)
(user_reg_add, value_of_user_reg): Use a baton for user
register functions.
* std-regs.c: Update.
* user-regs.h (user_reg_read_ftype, user_reg_add_builtin)
(user_reg_add): Add baton argument.
* NEWS: Mention target description register support.
* features/arm-core.xml, features/arm-fpa.xml: New.
* eval.c (evaluate_subexp_standard): Allow ptype $register
when the program is not running.
* gdb.texinfo (-target-disconnect): Use @smallexample.
(Requirements): Add anchor for Expat. Update description.
(Target Descriptions): Mention Expat.
(Target Description Format): Document new elements. Use
@smallexample.
(Predefined Target Types, Standard Target Features): New sections.
* doc/gdbint.texinfo (Target Descriptions): New section.
* gdb.xml/single-reg.xml, gdb.xml/tdesc-regs.exp,
gdb.xml/core-only.xml, gdb.xml/extra-regs.xml: New files.
2007-02-08 22:00:36 +01:00
|
|
|
/* A handler_data for yes/no boolean values. */
|
|
|
|
extern const struct gdb_xml_enum gdb_xml_enums_boolean[];
|
|
|
|
|
* memory-map.c (struct_memory_map_parsing_data): Remove most
members. Make property_name an array.
(free_memory_map_parsing_data, memory_map_start_element)
(memory_map_end_element, memory_map_character_data): Delete.
(memory_map_start_memory, memory_map_end_memory)
(memory_map_start_property, memory_map_end_property): New functions.
(property_attributes, memory_children, memory_type_enum)
(memory_attributes, memory_map_children, memory_map_elements): New.
(parse_memory_map): Rewrite.
* xml-support.c (debug_xml): New.
(xml_get_required_attribute, xml_get_integer_attribute)
(xml_get_enum_value, free_xml_parser, make_cleanup_free_xml_parser):
Delete.
(struct scope_level, struct gdb_xml_parser, gdb_xml_body_text)
(gdb_xml_debug, gdb_xml_error, gdb_xml_values_cleanup)
(gdb_xml_start_element, gdb_xml_start_element_wrapper)
(gdb_xml_end_element, gdb_xml_end_element_wrapper, gdb_xml_cleanup)
(gdb_xml_create_parser_and_cleanup, gdb_xml_parse)
(gdb_xml_parse_ulongest, gdb_xml_parse_attr_ulongest)
(gdb_xml_parse_attr_enum, show_debug_xml, _initialize_xml_support):
New.
* xml-support.h (struct gdb_xml_value, gdb_xml_attribute_handler)
(enum gdb_xml_attribute_flag, struct gdb_xml_attribute)
(enum gdb_xml_element_flag, struct gdb_xml_element)
(gdb_xml_element_start_handler, gdb_xml_element_end_handler)
(struct gdb_xml_enum): New.
(gdb_xml_create_parser_and_cleanup, gdb_xml_parse, gdb_xml_debug)
(gdb_xml_error, gdb_xml_parse_attr_ulongest)
(gdb_xml_parse_attr_enum, gdb_xml_parse_ulongest): New prototypes.
(xml_get_required_attribute, xml_get_integer_attribute)
(xml_get_enum_value, make_cleanup_free_xml_parser): Delete prototypes.
* Makefile.in (xml_support_h, xml-support.o): Update.
* gdb.texinfo (Debugging Output): Document "set debug xml"
and "show debug xml".
2007-01-04 23:11:44 +01:00
|
|
|
extern gdb_xml_attribute_handler gdb_xml_parse_attr_enum;
|
|
|
|
|
|
|
|
/* Parse an integer string into a ULONGEST and return it, or call
|
|
|
|
gdb_xml_error if it could not be parsed. */
|
|
|
|
|
|
|
|
ULONGEST gdb_xml_parse_ulongest (struct gdb_xml_parser *parser,
|
|
|
|
const char *value);
|
gdb/
2006-09-21 Vladimir Prus <vladimir@codesourcery.com>
Daniel Jacobowitz <dan@codesourcery.com>
Nathan Sidwell <nathan@codesourcery.com>
* Makefile.in (SFILES): Add memory-map.c and xml-support.c.
(memory_map_h, xml_support_h): New.
(target_h): Add vec_h dependency.
(COMMON_OBS): Add memory-map.o and xml-support.o.
(memory-map.o, xml-support.o): New rules.
(remote.o): Update.
* exceptions.h (enum errors): Add XML_PARSE_ERROR.
* infcmd.c (run_command_1, attach_command): Call target_pre_inferior.
* memattr.c (default_mem_attrib): Initialize blocksize.
(target_mem_region_list, mem_use_target)
(target_mem_regions_valid, mem_region_cmp, mem_region_init)
(require_user_regions, require_target_regions)
(invalidate_target_mem_regions): New.
(create_mem_region): Use mem_region_init.
(mem_clear): Move higher.
(lookup_mem_region): Use require_target_regions.
(mem_command): Implement "mem auto".
(mem_info_command): Handle target-supplied regions and flash
attributes.
(mem_enable_command, mem_disable_command, mem_delete_command): Use
require_user_regions.
(_initialize_mem): Mention "mem auto" in help.
* memattr.h (enum mem_access_mode): Add MEM_FLASH.
(struct mem_attrib): Add blocksize.
(invalidate_target_mem_regions, mem_region_init, mem_region_cmp): New
prototypes.
* remote.c: Include "memory-map.h".
(PACKET_qXfer_memory_map): New enum value.
(remote_protocol_features): Add qXfer:memory-map:read.
(remote_xfer_partial): Handle memory maps.
(remote_memory_map): New.
(init_remote_ops, init_remote_async_ops): Set to_memory_map.
(_initialize_remote): Register qXfer:memory-map:read.
* target.c (update_current_target): Mention to_memory_map.
(target_memory_map, target_pre_inferior): New.
(target_preopen): Call target_pre_inferior.
* target.h: Include "vec.h".
(enum target_object): Add TARGET_OBJECT_MEMORY_MAP.
(struct target_ops): Add to_memory_map.
(target_memory_map, target_pre_inferior): New prototypes.
* memory-map.c, memory-map.h, xml-support.c, xml-support.h: New files.
gdb/doc/
2006-09-21 Vladimir Prus <vladimir@codesourcery.com>
Daniel Jacobowitz <dan@codesourcery.com>
* gdb.texinfo (Memory Region Attributes): Mention target-supplied
memory regions and "mem auto".
2006-09-21 15:54:03 +02:00
|
|
|
|
|
|
|
#endif
|