GDB (xrefs)
Loading...
Searching...
No Matches
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, std::vector< gdb_xml_value > &attributes)
 
static void tdesc_start_feature (struct gdb_xml_parser *parser, const struct gdb_xml_element *element, void *user_data, std::vector< gdb_xml_value > &attributes)
 
static void tdesc_start_reg (struct gdb_xml_parser *parser, const struct gdb_xml_element *element, void *user_data, std::vector< gdb_xml_value > &attributes)
 
static void tdesc_start_union (struct gdb_xml_parser *parser, const struct gdb_xml_element *element, void *user_data, std::vector< gdb_xml_value > &attributes)
 
static void tdesc_start_struct (struct gdb_xml_parser *parser, const struct gdb_xml_element *element, void *user_data, std::vector< gdb_xml_value > &attributes)
 
static void tdesc_start_flags (struct gdb_xml_parser *parser, const struct gdb_xml_element *element, void *user_data, std::vector< gdb_xml_value > &attributes)
 
static void tdesc_start_enum (struct gdb_xml_parser *parser, const struct gdb_xml_element *element, void *user_data, std::vector< gdb_xml_value > &attributes)
 
static void tdesc_start_field (struct gdb_xml_parser *parser, const struct gdb_xml_element *element, void *user_data, std::vector< gdb_xml_value > &attributes)
 
static void tdesc_start_enum_value (struct gdb_xml_parser *parser, const struct gdb_xml_element *element, void *user_data, std::vector< gdb_xml_value > &attributes)
 
static void tdesc_start_vector (struct gdb_xml_parser *parser, const struct gdb_xml_element *element, void *user_data, std::vector< gdb_xml_value > &attributes)
 
static struct target_desctdesc_parse_xml (const char *document, xml_fetch_another fetcher)
 
const struct target_descfile_read_description_xml (const char *filename)
 
static gdb::optional< gdb::char_vector > fetch_available_features_from_target (const char *name, target_ops *ops)
 
const struct target_desctarget_read_description_xml (struct target_ops *ops)
 
gdb::optional< std::string > target_fetch_description_xml (struct target_ops *ops)
 
const struct target_descstring_read_description_xml (const char *xml)
 

Variables

static std::unordered_map< std::string, target_desc_up > 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::optional< gdb::char_vector > fetch_available_features_from_target ( const char * name,
target_ops * ops )
static

◆ file_read_description_xml()

const struct target_desc * file_read_description_xml ( const char * filename)

◆ string_read_description_xml()

const struct target_desc * string_read_description_xml ( const char * xml)

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

References tdesc_parse_xml().

Referenced by maintenance_check_tdesc_xml_convert(), and core_target::read_description().

◆ target_fetch_description_xml()

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

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

References fetch_available_features_from_target(), name, and xml_process_xincludes().

Referenced by tfile_write_tdesc().

◆ target_read_description_xml()

const struct target_desc * target_read_description_xml ( struct target_ops * ops)

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

References fetch_available_features_from_target(), name, 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 95 of file xml-tdesc.c.

References gdb_xml_error(), and set_tdesc_architecture().

◆ 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 130 of file xml-tdesc.c.

References 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

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

References GDB_OSABI_UNKNOWN, osabi_from_tdesc_string(), and set_tdesc_osabi().

◆ tdesc_parse_xml()

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

◆ tdesc_start_enum()

static void tdesc_start_enum ( struct gdb_xml_parser * parser,
const struct gdb_xml_element * element,
void * user_data,
std::vector< gdb_xml_value > & 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,
std::vector< gdb_xml_value > & attributes )
static

◆ tdesc_start_feature()

static void tdesc_start_feature ( struct gdb_xml_parser * parser,
const struct gdb_xml_element * element,
void * user_data,
std::vector< gdb_xml_value > & attributes )
static

◆ tdesc_start_field()

static void tdesc_start_field ( struct gdb_xml_parser * parser,
const struct gdb_xml_element * element,
void * user_data,
std::vector< gdb_xml_value > & attributes )
static

◆ tdesc_start_flags()

static void tdesc_start_flags ( struct gdb_xml_parser * parser,
const struct gdb_xml_element * element,
void * user_data,
std::vector< gdb_xml_value > & attributes )
static

◆ tdesc_start_reg()

static void tdesc_start_reg ( struct gdb_xml_parser * parser,
const struct gdb_xml_element * element,
void * user_data,
std::vector< gdb_xml_value > & attributes )
static

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

References attributes, gdb_xml_error(), name, regnum, and type.

◆ tdesc_start_struct()

static void tdesc_start_struct ( struct gdb_xml_parser * parser,
const struct gdb_xml_element * element,
void * user_data,
std::vector< gdb_xml_value > & attributes )
static

◆ tdesc_start_target()

static void tdesc_start_target ( struct gdb_xml_parser * parser,
const struct gdb_xml_element * element,
void * user_data,
std::vector< gdb_xml_value > & attributes )
static

◆ tdesc_start_union()

static void tdesc_start_union ( struct gdb_xml_parser * parser,
const struct gdb_xml_element * element,
void * user_data,
std::vector< gdb_xml_value > & attributes )
static

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

References attributes, gdb_xml_value::value, and xml_find_attribute().

◆ tdesc_start_vector()

static void tdesc_start_vector ( struct gdb_xml_parser * parser,
const struct gdb_xml_element * element,
void * user_data,
std::vector< gdb_xml_value > & attributes )
static

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

References attributes, gdb_xml_error(), and MAX_VECTOR_SIZE.

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
@ GDB_XML_AF_NONE

Definition at line 552 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 }
}
@ GDB_XML_EF_NONE
@ GDB_XML_EF_REPEATABLE
static const struct gdb_xml_attribute enum_value_attributes[]
Definition xml-tdesc.c:511
static void tdesc_start_enum_value(struct gdb_xml_parser *parser, const struct gdb_xml_element *element, void *user_data, std::vector< gdb_xml_value > &attributes)
Definition xml-tdesc.c:444

Definition at line 523 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_AF_OPTIONAL

Definition at line 511 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 565 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 }
}
@ GDB_XML_EF_OPTIONAL
static const struct gdb_xml_element struct_union_children[]
Definition xml-tdesc.c:517
static void tdesc_start_flags(struct gdb_xml_parser *parser, const struct gdb_xml_element *element, void *user_data, std::vector< gdb_xml_value > &attributes)
Definition xml-tdesc.c:270
static const struct gdb_xml_attribute enum_attributes[]
Definition xml-tdesc.c:552
static void tdesc_start_union(struct gdb_xml_parser *parser, const struct gdb_xml_element *element, void *user_data, std::vector< gdb_xml_value > &attributes)
Definition xml-tdesc.c:225
static void tdesc_start_vector(struct gdb_xml_parser *parser, const struct gdb_xml_element *element, void *user_data, std::vector< gdb_xml_value > &attributes)
Definition xml-tdesc.c:473
static const struct gdb_xml_attribute reg_attributes[]
Definition xml-tdesc.c:529
static void tdesc_start_struct(struct gdb_xml_parser *parser, const struct gdb_xml_element *element, void *user_data, std::vector< gdb_xml_value > &attributes)
Definition xml-tdesc.c:240
static const struct gdb_xml_element enum_children[]
Definition xml-tdesc.c:523
static void tdesc_start_reg(struct gdb_xml_parser *parser, const struct gdb_xml_element *element, void *user_data, std::vector< gdb_xml_value > &attributes)
Definition xml-tdesc.c:174
static void tdesc_start_enum(struct gdb_xml_parser *parser, const struct gdb_xml_element *element, void *user_data, std::vector< gdb_xml_value > &attributes)
Definition xml-tdesc.c:291
static const struct gdb_xml_attribute flags_attributes[]
Definition xml-tdesc.c:546
static const struct gdb_xml_attribute struct_union_attributes[]
Definition xml-tdesc.c:540
static const struct gdb_xml_attribute vector_attributes[]
Definition xml-tdesc.c:558

Definition at line 570 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 }
}

Definition at line 503 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 }
}

Definition at line 546 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 }
}
const struct gdb_xml_enum gdb_xml_enums_boolean[]
gdb_xml_attribute_handler gdb_xml_parse_attr_enum

Definition at line 529 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 }
}

Definition at line 540 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 void tdesc_start_field(struct gdb_xml_parser *parser, const struct gdb_xml_element *element, void *user_data, std::vector< gdb_xml_value > &attributes)
Definition xml-tdesc.c:315
static const struct gdb_xml_attribute field_attributes[]
Definition xml-tdesc.c:503

Definition at line 517 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 592 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 const struct gdb_xml_element feature_children[]
Definition xml-tdesc.c:570
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:95
static void tdesc_start_feature(struct gdb_xml_parser *parser, const struct gdb_xml_element *element, void *user_data, std::vector< gdb_xml_value > &attributes)
Definition xml-tdesc.c:160
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:130
static const struct gdb_xml_attribute feature_attributes[]
Definition xml-tdesc.c:565
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:112

Definition at line 597 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 void tdesc_start_target(struct gdb_xml_parser *parser, const struct gdb_xml_element *element, void *user_data, std::vector< gdb_xml_value > &attributes)
Definition xml-tdesc.c:144
static const struct gdb_xml_element target_children[]
Definition xml-tdesc.c:597
static const struct gdb_xml_attribute target_attributes[]
Definition xml-tdesc.c:592

Definition at line 610 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 }
}

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

◆ xml_cache

std::unordered_map<std::string, target_desc_up> xml_cache
static

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

Referenced by tdesc_parse_xml().