mirror of
https://github.com/bminor/binutils-gdb.git
synced 2025-11-16 12:34:43 +00:00
This patch adds a print_xml_feature visitor class which turns a C target description into xml. Both gdb and gdbserver can do this. An accept function is added to gdbserver tdesc to allow it to use vistor classes. Tests are added to maintenance_check_xml_descriptions which takes each pair of tested descriptions, turns them both into xml, then back again, and confirms the descriptions still match. Differences from V3 are: I now use string_appendf to print to the buffer. regdat.sh ensures tdesc->xmltarget is null for all targets with new style target descriptions. tdesc_get_features_xml() will only generate xml if xmltarget is null. This ensures older targets continue to send just the name of the xml file. Added a save_restore check when parsing registers. Alan. 2018-03-21 Alan Hayward <alan.hayward@arm.com> gdb/ * common/tdesc.c (print_xml_feature::visit_post): Add xml parsing. (print_xml_feature::visit_pre): Likewise. (print_xml_feature::visit_post): Likewise. (print_xml_feature::visit): Likewise. (print_xml_feature::visit): Likewise. (print_xml_feature::visit): Likewise. (print_xml_feature::visit): Likewise. * common/tdesc.h (print_xml_feature): Add new class. * regformats/regdat.sh: Null xmltarget on feature targets. * target-descriptions.c (struct target_desc): Add xmltarget. (print_xml_feature::visit_pre): Add xml vistor. (tdesc_get_features_xml): Add function to get xml. (maintenance_check_xml_descriptions): Test xml generation. * xml-tdesc.c (target_read_description_xml_string): Add function. * xml-tdesc.h (target_read_description_xml_string): Add declaration. gdbserver/ * tdesc.c (void target_desc::accept): Fill in function. (tdesc_get_features_xml): Remove old xml creation. (print_xml_feature::visit_pre): Add xml vistor.
54 lines
1.8 KiB
C++
54 lines
1.8 KiB
C++
/* XML target description support for GDB.
|
|
|
|
Copyright (C) 2006-2018 Free Software Foundation, Inc.
|
|
|
|
Contributed by CodeSourcery.
|
|
|
|
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
|
|
the Free Software Foundation; either version 3 of the License, or
|
|
(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
|
|
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
|
|
|
#ifndef XML_TDESC_H
|
|
#define XML_TDESC_H
|
|
|
|
#include "common/gdb_optional.h"
|
|
#include <string>
|
|
|
|
struct target_ops;
|
|
struct target_desc;
|
|
|
|
/* Read an XML target description from FILENAME. Parse it, and return
|
|
the parsed description. */
|
|
|
|
const struct target_desc *file_read_description_xml (const char *filename);
|
|
|
|
/* Read an XML target description using OPS. Parse it, and return the
|
|
parsed description. */
|
|
|
|
const struct target_desc *target_read_description_xml (struct target_ops *);
|
|
|
|
/* Fetches an XML target description using OPS, processing includes,
|
|
but not parsing it. Used to dump whole tdesc as a single XML file.
|
|
Returns the description on success, and a disengaged optional
|
|
otherwise. */
|
|
gdb::optional<std::string> target_fetch_description_xml (target_ops *ops);
|
|
|
|
/* Take an xml string, parse it, and return the parsed description. Does not
|
|
handle a string containing includes. */
|
|
|
|
const struct target_desc *target_read_description_xml_string (const char *);
|
|
|
|
#endif /* XML_TDESC_H */
|
|
|