GDB (xrefs)
Classes | Macros | Functions | Variables
/tmp/gdb-8.1/gdb/xml-tdesc.c File Reference
#include "defs.h"
#include "target.h"
#include "target-descriptions.h"
#include "xml-support.h"
#include "xml-tdesc.h"
#include "osabi.h"
#include "filenames.h"
#include <unordered_map>
#include <string>

Go to the source code of this file.

Classes

struct  tdesc_parsing_data
 

Macros

#define MAX_FIELD_SIZE   65536
 
#define MAX_FIELD_BITSIZE   (MAX_FIELD_SIZE * TARGET_CHAR_BIT)
 
#define MAX_VECTOR_SIZE   65536
 

Functions

static void tdesc_end_arch (struct gdb_xml_parser *parser, const struct gdb_xml_element *element, void *user_data, const char *body_text)
 
static void tdesc_end_osabi (struct gdb_xml_parser *parser, const struct gdb_xml_element *element, void *user_data, const char *body_text)
 
static void tdesc_end_compatible (struct gdb_xml_parser *parser, const struct gdb_xml_element *element, void *user_data, const char *body_text)
 
static void tdesc_start_target (struct gdb_xml_parser *parser, const struct gdb_xml_element *element, void *user_data, VEC(gdb_xml_value_s) *attributes)
 
static void tdesc_start_feature (struct gdb_xml_parser *parser, const struct gdb_xml_element *element, void *user_data, VEC(gdb_xml_value_s) *attributes)
 
static void tdesc_start_reg (struct gdb_xml_parser *parser, const struct gdb_xml_element *element, void *user_data, VEC(gdb_xml_value_s) *attributes)
 
static void tdesc_start_union (struct gdb_xml_parser *parser, const struct gdb_xml_element *element, void *user_data, VEC(gdb_xml_value_s) *attributes)
 
static void tdesc_start_struct (struct gdb_xml_parser *parser, const struct gdb_xml_element *element, void *user_data, VEC(gdb_xml_value_s) *attributes)
 
static void tdesc_start_flags (struct gdb_xml_parser *parser, const struct gdb_xml_element *element, void *user_data, VEC(gdb_xml_value_s) *attributes)
 
static void tdesc_start_enum (struct gdb_xml_parser *parser, const struct gdb_xml_element *element, void *user_data, VEC(gdb_xml_value_s) *attributes)
 
static void tdesc_start_field (struct gdb_xml_parser *parser, const struct gdb_xml_element *element, void *user_data, VEC(gdb_xml_value_s) *attributes)
 
static void tdesc_start_enum_value (struct gdb_xml_parser *parser, const struct gdb_xml_element *element, void *user_data, VEC(gdb_xml_value_s) *attributes)
 
static void tdesc_start_vector (struct gdb_xml_parser *parser, const struct gdb_xml_element *element, void *user_data, VEC(gdb_xml_value_s) *attributes)
 
static struct target_desctdesc_parse_xml (const char *document, xml_fetch_another fetcher, void *fetcher_baton)
 
const struct target_descfile_read_description_xml (const char *filename)
 
static gdb::unique_xmalloc_ptr< char > fetch_available_features_from_target (const char *name, void *baton_)
 
const struct target_desctarget_read_description_xml (struct target_ops *ops)
 
gdb::optional< std::stringtarget_fetch_description_xml (struct target_ops *ops)
 

Variables

static std::unordered_map< std::string, target_desc * > xml_cache
 
static const struct gdb_xml_attribute field_attributes []
 
static const struct gdb_xml_attribute enum_value_attributes []
 
static const struct gdb_xml_element struct_union_children []
 
static const struct gdb_xml_element enum_children []
 
static const struct gdb_xml_attribute reg_attributes []
 
static const struct gdb_xml_attribute struct_union_attributes []
 
static const struct gdb_xml_attribute flags_attributes []
 
static const struct gdb_xml_attribute enum_attributes []
 
static const struct gdb_xml_attribute vector_attributes []
 
static const struct gdb_xml_attribute feature_attributes []
 
static const struct gdb_xml_element feature_children []
 
static const struct gdb_xml_attribute target_attributes []
 
static const struct gdb_xml_element target_children []
 
static const struct gdb_xml_element tdesc_elements []
 

Macro Definition Documentation

◆ MAX_FIELD_BITSIZE

#define MAX_FIELD_BITSIZE   (MAX_FIELD_SIZE * TARGET_CHAR_BIT)

Definition at line 35 of file xml-tdesc.c.

Referenced by tdesc_start_field().

◆ MAX_FIELD_SIZE

#define MAX_FIELD_SIZE   65536

Definition at line 34 of file xml-tdesc.c.

Referenced by tdesc_start_enum(), tdesc_start_flags(), and tdesc_start_struct().

◆ MAX_VECTOR_SIZE

#define MAX_VECTOR_SIZE   65536

Definition at line 36 of file xml-tdesc.c.

Referenced by tdesc_start_vector().

Function Documentation

◆ fetch_available_features_from_target()

static gdb::unique_xmalloc_ptr<char> fetch_available_features_from_target ( const char *  name,
void *  baton_ 
)
static

◆ file_read_description_xml()

const struct target_desc* file_read_description_xml ( const char *  filename)

◆ target_fetch_description_xml()

gdb::optional<std::string> target_fetch_description_xml ( struct target_ops ops)

◆ target_read_description_xml()

const struct target_desc* target_read_description_xml ( struct target_ops ops)

Definition at line 708 of file xml-tdesc.c.

References fetch_available_features_from_target(), and tdesc_parse_xml().

Referenced by target_find_description().

◆ tdesc_end_arch()

static void tdesc_end_arch ( struct gdb_xml_parser parser,
const struct gdb_xml_element element,
void *  user_data,
const char *  body_text 
)
static

Definition at line 96 of file xml-tdesc.c.

References _, gdb_xml_error(), set_tdesc_architecture(), and tdesc_parsing_data::tdesc.

◆ tdesc_end_compatible()

static void tdesc_end_compatible ( struct gdb_xml_parser parser,
const struct gdb_xml_element element,
void *  user_data,
const char *  body_text 
)
static

Definition at line 131 of file xml-tdesc.c.

References tdesc_parsing_data::tdesc, and tdesc_add_compatible().

◆ tdesc_end_osabi()

static void tdesc_end_osabi ( struct gdb_xml_parser parser,
const struct gdb_xml_element element,
void *  user_data,
const char *  body_text 
)
static

◆ tdesc_parse_xml()

static struct target_desc* tdesc_parse_xml ( const char *  document,
xml_fetch_another  fetcher,
void *  fetcher_baton 
)
static

◆ tdesc_start_enum()

static void tdesc_start_enum ( struct gdb_xml_parser parser,
const struct gdb_xml_element element,
void *  user_data,
VEC(gdb_xml_value_s) *  attributes 
)
static

◆ tdesc_start_enum_value()

static void tdesc_start_enum_value ( struct gdb_xml_parser parser,
const struct gdb_xml_element element,
void *  user_data,
VEC(gdb_xml_value_s) *  attributes 
)
static

◆ tdesc_start_feature()

static void tdesc_start_feature ( struct gdb_xml_parser parser,
const struct gdb_xml_element element,
void *  user_data,
VEC(gdb_xml_value_s) *  attributes 
)
static

◆ tdesc_start_field()

static void tdesc_start_field ( struct gdb_xml_parser parser,
const struct gdb_xml_element element,
void *  user_data,
VEC(gdb_xml_value_s) *  attributes 
)
static

◆ tdesc_start_flags()

static void tdesc_start_flags ( struct gdb_xml_parser parser,
const struct gdb_xml_element element,
void *  user_data,
VEC(gdb_xml_value_s) *  attributes 
)
static

◆ tdesc_start_reg()

static void tdesc_start_reg ( struct gdb_xml_parser parser,
const struct gdb_xml_element element,
void *  user_data,
VEC(gdb_xml_value_s) *  attributes 
)
static

◆ tdesc_start_struct()

static void tdesc_start_struct ( struct gdb_xml_parser parser,
const struct gdb_xml_element element,
void *  user_data,
VEC(gdb_xml_value_s) *  attributes 
)
static

◆ tdesc_start_target()

static void tdesc_start_target ( struct gdb_xml_parser parser,
const struct gdb_xml_element element,
void *  user_data,
VEC(gdb_xml_value_s) *  attributes 
)
static

Definition at line 145 of file xml-tdesc.c.

References _, gdb_xml_error(), gdb_xml_value::value, version, and xml_find_attribute().

◆ tdesc_start_union()

static void tdesc_start_union ( struct gdb_xml_parser parser,
const struct gdb_xml_element element,
void *  user_data,
VEC(gdb_xml_value_s) *  attributes 
)
static

◆ tdesc_start_vector()

static void tdesc_start_vector ( struct gdb_xml_parser parser,
const struct gdb_xml_element element,
void *  user_data,
VEC(gdb_xml_value_s) *  attributes 
)
static

Variable Documentation

◆ enum_attributes

const struct gdb_xml_attribute enum_attributes[]
static
Initial value:
= {
{ "id", GDB_XML_AF_NONE, NULL, NULL },
{ NULL, GDB_XML_AF_NONE, NULL, NULL }
}
gdb_xml_attribute_handler gdb_xml_parse_attr_ulongest

Definition at line 554 of file xml-tdesc.c.

◆ enum_children

const struct gdb_xml_element enum_children[]
static
Initial value:
= {
{ NULL, NULL, NULL, GDB_XML_EF_NONE, NULL, NULL }
}
static void tdesc_start_enum_value(struct gdb_xml_parser *parser, const struct gdb_xml_element *element, void *user_data, VEC(gdb_xml_value_s) *attributes)
Definition: xml-tdesc.c:445
static const struct gdb_xml_attribute enum_value_attributes[]
Definition: xml-tdesc.c:513

Definition at line 525 of file xml-tdesc.c.

◆ enum_value_attributes

const struct gdb_xml_attribute enum_value_attributes[]
static
Initial value:
= {
{ "name", GDB_XML_AF_NONE, NULL, NULL },
{ NULL, GDB_XML_AF_NONE, NULL, NULL }
}
gdb_xml_attribute_handler gdb_xml_parse_attr_ulongest

Definition at line 513 of file xml-tdesc.c.

◆ feature_attributes

const struct gdb_xml_attribute feature_attributes[]
static
Initial value:
= {
{ "name", GDB_XML_AF_NONE, NULL, NULL },
{ NULL, GDB_XML_AF_NONE, NULL, NULL }
}

Definition at line 567 of file xml-tdesc.c.

◆ feature_children

const struct gdb_xml_element feature_children[]
static
Initial value:
= {
{ "reg", reg_attributes, NULL,
tdesc_start_reg, NULL },
{ "vector", vector_attributes, NULL,
{ NULL, NULL, NULL, GDB_XML_EF_NONE, NULL, NULL }
}
static const struct gdb_xml_attribute vector_attributes[]
Definition: xml-tdesc.c:560
static const struct gdb_xml_attribute reg_attributes[]
Definition: xml-tdesc.c:531
static void tdesc_start_union(struct gdb_xml_parser *parser, const struct gdb_xml_element *element, void *user_data, VEC(gdb_xml_value_s) *attributes)
Definition: xml-tdesc.c:226
static const struct gdb_xml_attribute enum_attributes[]
Definition: xml-tdesc.c:554
static void tdesc_start_flags(struct gdb_xml_parser *parser, const struct gdb_xml_element *element, void *user_data, VEC(gdb_xml_value_s) *attributes)
Definition: xml-tdesc.c:271
static const struct gdb_xml_attribute flags_attributes[]
Definition: xml-tdesc.c:548
static void tdesc_start_reg(struct gdb_xml_parser *parser, const struct gdb_xml_element *element, void *user_data, VEC(gdb_xml_value_s) *attributes)
Definition: xml-tdesc.c:174
static const struct gdb_xml_attribute struct_union_attributes[]
Definition: xml-tdesc.c:542
static void tdesc_start_enum(struct gdb_xml_parser *parser, const struct gdb_xml_element *element, void *user_data, VEC(gdb_xml_value_s) *attributes)
Definition: xml-tdesc.c:292
static const struct gdb_xml_element enum_children[]
Definition: xml-tdesc.c:525
static void tdesc_start_struct(struct gdb_xml_parser *parser, const struct gdb_xml_element *element, void *user_data, VEC(gdb_xml_value_s) *attributes)
Definition: xml-tdesc.c:241
static void tdesc_start_vector(struct gdb_xml_parser *parser, const struct gdb_xml_element *element, void *user_data, VEC(gdb_xml_value_s) *attributes)
Definition: xml-tdesc.c:474
static const struct gdb_xml_element struct_union_children[]
Definition: xml-tdesc.c:519

Definition at line 572 of file xml-tdesc.c.

◆ field_attributes

const struct gdb_xml_attribute field_attributes[]
static
Initial value:
= {
{ "name", GDB_XML_AF_NONE, NULL, NULL },
{ "type", GDB_XML_AF_OPTIONAL, NULL, NULL },
{ NULL, GDB_XML_AF_NONE, NULL, NULL }
}
gdb_xml_attribute_handler gdb_xml_parse_attr_ulongest

Definition at line 505 of file xml-tdesc.c.

◆ flags_attributes

const struct gdb_xml_attribute flags_attributes[]
static
Initial value:
= {
{ "id", GDB_XML_AF_NONE, NULL, NULL },
{ NULL, GDB_XML_AF_NONE, NULL, NULL }
}
gdb_xml_attribute_handler gdb_xml_parse_attr_ulongest

Definition at line 548 of file xml-tdesc.c.

◆ reg_attributes

const struct gdb_xml_attribute reg_attributes[]
static
Initial value:
= {
{ "name", GDB_XML_AF_NONE, NULL, NULL },
{ "type", GDB_XML_AF_OPTIONAL, NULL, NULL },
{ "group", GDB_XML_AF_OPTIONAL, NULL, NULL },
{ "save-restore", GDB_XML_AF_OPTIONAL,
{ NULL, GDB_XML_AF_NONE, NULL, NULL }
}
gdb_xml_attribute_handler gdb_xml_parse_attr_enum
const struct gdb_xml_enum gdb_xml_enums_boolean[]
Definition: xml-support.c:715
gdb_xml_attribute_handler gdb_xml_parse_attr_ulongest

Definition at line 531 of file xml-tdesc.c.

◆ struct_union_attributes

const struct gdb_xml_attribute struct_union_attributes[]
static
Initial value:
= {
{ "id", GDB_XML_AF_NONE, NULL, NULL },
{ NULL, GDB_XML_AF_NONE, NULL, NULL }
}
gdb_xml_attribute_handler gdb_xml_parse_attr_ulongest

Definition at line 542 of file xml-tdesc.c.

◆ struct_union_children

const struct gdb_xml_element struct_union_children[]
static
Initial value:
= {
{ NULL, NULL, NULL, GDB_XML_EF_NONE, NULL, NULL }
}
static const struct gdb_xml_attribute field_attributes[]
Definition: xml-tdesc.c:505
static void tdesc_start_field(struct gdb_xml_parser *parser, const struct gdb_xml_element *element, void *user_data, VEC(gdb_xml_value_s) *attributes)
Definition: xml-tdesc.c:316

Definition at line 519 of file xml-tdesc.c.

◆ target_attributes

const struct gdb_xml_attribute target_attributes[]
static
Initial value:
= {
{ "version", GDB_XML_AF_NONE, NULL, NULL },
{ NULL, GDB_XML_AF_NONE, NULL, NULL }
}

Definition at line 594 of file xml-tdesc.c.

◆ target_children

const struct gdb_xml_element target_children[]
static
Initial value:
= {
{ "architecture", NULL, NULL, GDB_XML_EF_OPTIONAL,
NULL, tdesc_end_arch },
{ "osabi", NULL, NULL, GDB_XML_EF_OPTIONAL,
NULL, tdesc_end_osabi },
{ "compatible", NULL, NULL, GDB_XML_EF_OPTIONAL | GDB_XML_EF_REPEATABLE,
{ NULL, NULL, NULL, GDB_XML_EF_NONE, NULL, NULL }
}
static void tdesc_end_osabi(struct gdb_xml_parser *parser, const struct gdb_xml_element *element, void *user_data, const char *body_text)
Definition: xml-tdesc.c:113
static const struct gdb_xml_attribute feature_attributes[]
Definition: xml-tdesc.c:567
static void tdesc_start_feature(struct gdb_xml_parser *parser, const struct gdb_xml_element *element, void *user_data, VEC(gdb_xml_value_s) *attributes)
Definition: xml-tdesc.c:160
static const struct gdb_xml_element feature_children[]
Definition: xml-tdesc.c:572
static void tdesc_end_arch(struct gdb_xml_parser *parser, const struct gdb_xml_element *element, void *user_data, const char *body_text)
Definition: xml-tdesc.c:96
static void tdesc_end_compatible(struct gdb_xml_parser *parser, const struct gdb_xml_element *element, void *user_data, const char *body_text)
Definition: xml-tdesc.c:131

Definition at line 599 of file xml-tdesc.c.

◆ tdesc_elements

const struct gdb_xml_element tdesc_elements[]
static
Initial value:
= {
{ NULL, NULL, NULL, GDB_XML_EF_NONE, NULL, NULL }
}
static const struct gdb_xml_attribute target_attributes[]
Definition: xml-tdesc.c:594
static void tdesc_start_target(struct gdb_xml_parser *parser, const struct gdb_xml_element *element, void *user_data, VEC(gdb_xml_value_s) *attributes)
Definition: xml-tdesc.c:145
static const struct gdb_xml_element target_children[]
Definition: xml-tdesc.c:599

Definition at line 612 of file xml-tdesc.c.

Referenced by tdesc_parse_xml().

◆ vector_attributes

const struct gdb_xml_attribute vector_attributes[]
static
Initial value:
= {
{ "id", GDB_XML_AF_NONE, NULL, NULL },
{ "type", GDB_XML_AF_NONE, NULL, NULL },
{ NULL, GDB_XML_AF_NONE, NULL, NULL }
}
gdb_xml_attribute_handler gdb_xml_parse_attr_ulongest

Definition at line 560 of file xml-tdesc.c.

◆ xml_cache

std::unordered_map<std::string, target_desc *> xml_cache
static

Definition at line 69 of file xml-tdesc.c.

Referenced by tdesc_parse_xml().