39 #include "readline/tilde.h" 82 int regnum,
int save_restore_,
const char *group_,
83 int bitsize_,
const char *type_)
86 group (group_ != NULL ? group_ :
""),
88 type (type_ != NULL ? type_ :
"<unknown>")
149 return !(*
this == other);
160 int start_,
int end_)
224 return !(*
this == other);
292 if (gdb_type != NULL)
315 "Type \"%s\" has an unknown kind %d",
339 if (vector_gdb_type != NULL)
340 return vector_gdb_type;
346 return vector_gdb_type;
375 if (f.start != -1 && f.end != -1)
379 struct type *field_gdb_type;
380 int bitsize, total_size;
385 field_gdb_type = f.type->make_gdb_type (
gdbarch);
386 else if (this->
size > 4)
392 (struct_gdb_type, xstrdup (f.name.c_str ()), field_gdb_type);
401 bitsize = f.end - f.start + 1;
412 type *field_gdb_type = f.type->make_gdb_type (
gdbarch);
414 xstrdup (f.name.c_str ()),
422 return struct_gdb_type;
432 type* field_gdb_type = f.type->make_gdb_type (
gdbarch);
443 return union_gdb_type;
453 int bitsize = f.end - f.start + 1;
456 type *field_gdb_type = f.type->make_gdb_type (
gdbarch);
458 field_gdb_type, f.name.c_str ());
461 return flags_gdb_type;
468 this->
name.c_str ());
475 xstrdup (f.name.c_str ()),
481 return enum_gdb_type;
487 if (gdb_type != NULL)
503 "Type \"%s\" has an unknown kind %d",
557 for (
int ix = 0; ix <
registers.size (); ix++)
562 if (reg1 != reg2 && *reg1 != *reg2)
569 for (
int ix = 0; ix <
types.size (); ix++)
574 if (type1 != type2 && *type1 != *type2)
583 return !(*
this == other);
602 const struct bfd_arch_info *
arch = NULL;
638 for (
int ix = 0; ix <
features.size (); ix++)
643 if (feature1 != feature2 && *feature1 != *feature2)
652 return !(*
this == other);
717 if (
inf->tdesc_info == NULL)
719 return inf->tdesc_info;
732 return info != NULL && info->
filename != NULL;
753 if (tdesc_info != NULL)
762 #define target_desc_fetched \ 763 get_tdesc_info (current_inferior ())->fetched 764 #define current_target_desc \ 765 get_tdesc_info (current_inferior ())->tdesc 766 #define target_description_filename \ 767 get_tdesc_info (current_inferior ())->filename 817 warning (
_(
"Architecture rejected target-supplied description"));
826 warning (
_(
"Target-supplied registers are not supported " 827 "by the current architecture"));
853 _(
"Could not remove target-supplied description"));
874 const struct bfd_arch_info *
arch)
880 || compat->compatible (compat,
arch))
898 return prop.
value.c_str ();
906 const struct bfd_arch_info *
932 if (!feature->registers.empty ())
946 if (feature->name ==
name)
947 return feature.get ();
957 return feature->
name.c_str ();
1001 if (
type->name ==
id)
1023 &&
reg.reg->tdesc_type
1025 &&
reg.reg->tdesc_type->
name ==
id)
1086 int regno,
const char *
name)
1094 while (regno >= data->
arch_regs.size ())
1095 data->
arch_regs.emplace_back (
nullptr,
nullptr);
1123 int regno,
const char *
const names[])
1127 for (i = 0; names[i] != NULL; i++)
1144 return reg->bitsize;
1166 return reg?
reg->reg : NULL;
1182 if (regno >= num_regs && regno < num_regs + num_pseudo_regs)
1202 if (
reg == NULL && regno >= num_regs && regno < num_regs + num_pseudo_regs)
1215 if (arch_reg->
type == NULL)
1218 if (
reg->tdesc_type)
1222 else if (
reg->type ==
"float")
1232 warning (
_(
"Register \"%s\" has an unsupported size (%d bits)"),
1237 else if (
reg->type ==
"int")
1254 warning (
_(
"Register \"%s\" has an unsupported size (%d bits)"),
1260 if (arch_reg->
type == NULL)
1262 "Register \"%s\" has an unknown type \"%s\"",
1266 return arch_reg->
type;
1275 return reg->target_regnum;
1297 if (
reg != NULL && !
reg->group.empty ()
1303 return reg->save_restore;
1320 if (regno >= num_regs && regno < num_regs + num_pseudo_regs)
1395 reg_hash = htab_create (37, htab_hash_pointer, htab_eq_pointer, NULL);
1399 void **slot = htab_find_slot (reg_hash,
reg.get (), INSERT);
1403 if (!
reg->group.empty ())
1406 reg->group.c_str (),
1413 if (arch_reg.
reg != NULL)
1414 htab_remove_elt (reg_hash, arch_reg.
reg);
1422 while (data->
arch_regs.size () < num_regs)
1423 data->
arch_regs.emplace_back (
nullptr,
nullptr);
1427 if (htab_find (reg_hash,
reg.get ()) != NULL)
1433 htab_delete (reg_hash);
1449 int regnum,
int save_restore,
const char *group,
1450 int bitsize,
const char *
type)
1453 group, bitsize,
type);
1548 int start,
int end,
struct tdesc_type *field_type)
1579 const char *flag_name)
1584 type->fields.emplace_back (flag_name,
1607 tdesc->
features.emplace_back (new_feature);
1634 const struct bfd_arch_info *compatible)
1639 if (compatible == NULL)
1643 if (compat == compatible)
1645 _(
"Attempted to add duplicate " 1646 "compatible architecture \"%s\""),
1647 compatible->printable_name);
1654 const char *key,
const char *
value)
1660 _(
"Attempted to add duplicate property \"%s\""), key);
1676 const struct bfd_arch_info *arch)
1742 "read from the target.\n"));
1767 for (inp = filename, outp =
m_function; *inp !=
'\0'; inp++)
1770 else if (*inp ==
'-')
1778 "-*- buffer-read-only: t -*- vi" 1802 (
" struct target_desc *result = allocate_target_description ();\n");
1807 (
" set_tdesc_architecture (result, bfd_scan_arch (\"%s\"));\n",
1815 (
" set_tdesc_osabi (result, osabi_from_tdesc_string (\"%s\"));\n",
1820 for (
const bfd_arch_info_type *compatible : e->
compatible)
1822 (
" tdesc_add_compatible (result, bfd_scan_arch (\"%s\"));\n",
1823 compatible->printable_name);
1830 prop.
key.c_str (), prop.
value.c_str ());
1852 error (
_(
"C output is not supported type \"%s\"."),
type->name.c_str ());
1864 (
" element_type = tdesc_named_type (feature, \"%s\");\n",
1865 type->element_type->name.c_str ());
1867 (
" tdesc_create_vector (feature, \"%s\", element_type, %d);\n",
1888 (
" type_with_fields = tdesc_create_struct (feature, \"%s\");\n",
1889 type->name.c_str ());
1890 if (
type->size != 0)
1892 (
" tdesc_set_struct_size (type_with_fields, %d);\n",
type->size);
1897 (
" type_with_fields = tdesc_create_flags (feature, \"%s\", %d);\n",
1902 const char *type_name;
1916 (
" tdesc_add_flag (type_with_fields, %d, \"%s\");\n",
1924 (
" tdesc_add_bitfield (type_with_fields, \"%s\", %d, %d);\n",
1930 (
"tdesc_named_type (feature, \"%s\");\n",
1933 (
" tdesc_add_typed_bitfield (type_with_fields, \"%s\"," 1934 " %d, %d, field_type);\n",
1943 (
"tdesc_named_type (feature, \"%s\");\n", type_name);
1945 (
" tdesc_add_field (type_with_fields, \"%s\", field_type);\n",
1952 (
" type_with_fields = tdesc_create_union (feature, \"%s\");\n",
1953 type->name.c_str ());
1957 (
"tdesc_named_type (feature, \"%s\");\n", f.
type->
name.c_str ());
1959 (
" tdesc_add_field (type_with_fields, \"%s\", field_type);\n",
1965 (
" type_with_fields = tdesc_create_enum (feature, \"%s\", %d);\n",
1969 (
" tdesc_add_enum_value (type_with_fields, %d, \"%s\");\n",
1973 error (
_(
"C output is not supported type \"%s\"."),
type->name.c_str ());
1984 if (!
reg->group.empty ())
2010 va_start (args, fmt);
2057 auto pos =
name.find_first_of (
'.');
2060 std::replace (
name.begin (),
name.end (),
'/',
'_');
2061 std::replace (
name.begin (),
name.end (),
'-',
'_');
2071 (
"\n feature = tdesc_create_feature (result, \"%s\", \"%s\");\n",
2112 reg->target_regnum);
2115 error (
_(
"\"regnum\" attribute %ld is not the largest number (%d)."),
2127 if (!
reg->group.empty ())
2145 const char *filename;
2164 error (
_(
"There is no target description to print."));
2166 if (filename == NULL)
2167 error (
_(
"The current target description did not come from an XML file."));
2170 auto loc = filename_after_features.rfind (
"/features/");
2172 if (
loc != std::string::npos)
2173 filename_after_features = filename_after_features.substr (
loc + 10);
2178 if (
startswith (filename_after_features.c_str (),
"i386/32bit-")
2179 ||
startswith (filename_after_features.c_str (),
"i386/64bit-")
2180 ||
startswith (filename_after_features.c_str (),
"i386/x32-core.xml")
2181 ||
startswith (filename_after_features.c_str (),
"tic6x-")
2182 ||
startswith (filename_after_features.c_str (),
"aarch64"))
2198 static std::vector<std::pair<const char*, const target_desc *>>
xml_tdesc;
2205 record_xml_tdesc (
const char *xml_file,
const struct target_desc *tdesc)
2207 xml_tdesc.emplace_back (xml_file, tdesc);
2221 error (
_(
"Missing dir name"));
2225 unsigned int failed = 0;
2233 if (tdesc == NULL || *tdesc != *e.second)
2246 Set target description specific variables."),
2250 Show target description specific variables."),
2254 Unset target description specific variables."),
2261 Set the file to read for an XML target description"),
_(
"\ 2262 Show the file to read for an XML target description"),
_(
"\ 2263 When set, GDB will read the target description from a local\n\ 2264 file instead of querying the remote target."),
2270 Unset the file to read for an XML target description. When unset,\n\ 2271 GDB will read the description from the target."),
2275 Print the current target description as a C source file."),
2282 Check the target descriptions created in GDB equal the descriptions\n\ 2283 created from XML files in the directory.\n\ 2284 The parameter is the directory name."),
void reggroup_add(struct gdbarch *gdbarch, struct reggroup *group)
static std::vector< std::pair< const char *, const target_desc * > > xml_tdesc
void tdesc_add_typed_bitfield(tdesc_type_with_fields *type, const char *field_name, int start, int end, struct tdesc_type *field_type)
struct gdbarch * target_gdbarch(void)
void set_gdbarch_num_regs(struct gdbarch *gdbarch, int num_regs)
static struct tdesc_reg * tdesc_find_register(struct gdbarch *gdbarch, int regno)
void add_setshow_filename_cmd(const char *name, enum command_class theclass, char **var, const char *set_doc, const char *show_doc, const char *help_doc, cmd_const_sfunc_ftype *set_func, show_value_ftype *show_func, struct cmd_list_element **set_list, struct cmd_list_element **show_list)
void accept(tdesc_element_visitor &v) const override
std::vector< tdesc_reg_up > registers
tdesc_type_with_fields * tdesc_create_enum(struct tdesc_feature *feature, const char *name, int size)
virtual void visit(const tdesc_type_builtin *e)=0
struct tdesc_type * tdesc_create_vector(struct tdesc_feature *feature, const char *name, struct tdesc_type *field_type, int count)
DISABLE_COPY_AND_ASSIGN(tdesc_reg)
int tdesc_register_in_reggroup_p(struct gdbarch *gdbarch, int regno, struct reggroup *reggroup)
struct type * arch_type(struct gdbarch *gdbarch, enum type_code code, int bit, const char *name)
void accept(tdesc_element_visitor &v) const override
static void unset_tdesc_filename_cmd(const char *args, int from_tty)
tdesc_reg(struct tdesc_feature *feature, const std::string &name_, int regnum, int save_restore_, const char *group_, int bitsize_, const char *type_)
struct type * builtin_func_ptr
void set_tdesc_pseudo_register_name(struct gdbarch *gdbarch, gdbarch_register_name_ftype *pseudo_name)
static int tdesc_register_reggroup_p(struct gdbarch *gdbarch, int regno, struct reggroup *reggroup)
struct type * builtin_long_double
tdesc_type_vector(const std::string &name, tdesc_type *element_type_, int count_)
virtual ~tdesc_reg()=default
virtual ~target_desc()=default
void tdesc_set_struct_size(tdesc_type_with_fields *type, int size)
void append_flags_type_field(struct type *type, int start_bitpos, int nr_bits, struct type *field_type, const char *name)
std::vector< tdesc_feature_up > features
void tdesc_add_field(tdesc_type_with_fields *type, const char *field_name, struct tdesc_type *field_type)
const struct floatformat * floatformats_ieee_double[BFD_ENDIAN_UNKNOWN]
void operator=(const target_desc &)=delete
virtual ~tdesc_type()=default
static tdesc_type_builtin tdesc_predefined_types[]
void copy_inferior_target_desc_info(struct inferior *destinf, struct inferior *srcinf)
int gdbarch_int_bit(struct gdbarch *gdbarch)
static void show_tdesc_filename_cmd(struct ui_file *file, int from_tty, struct cmd_list_element *c, const char *value)
void set_tdesc_pseudo_register_type(struct gdbarch *gdbarch, gdbarch_register_type_ftype *pseudo_type)
void warning(const char *fmt,...)
int target_desc_info_from_user_p(struct target_desc_info *info)
virtual type * make_gdb_type(struct gdbarch *gdbarch) const =0
int tdesc_compatible_p(const struct target_desc *target_desc, const struct bfd_arch_info *arch)
void visit(const tdesc_reg *reg) override
tdesc_feature(const std::string &name_)
#define TYPE_NAME(thistype)
type * make_gdb_type(struct gdbarch *gdbarch) const override
int gdbarch_ptr_bit(struct gdbarch *gdbarch)
type * make_gdb_type_union(struct gdbarch *gdbarch) const
struct tdesc_type * tdesc_type
const struct builtin_type * builtin_type(struct gdbarch *gdbarch)
tdesc_arch_reg(tdesc_reg *reg_, struct type *type_)
void internal_error(const char *file, int line, const char *fmt,...)
int gdbarch_update_p(struct gdbarch_info info)
const char * tdesc_register_name(struct gdbarch *gdbarch, int regno)
bool operator!=(const target_desc &other) const
struct type * builtin_uint8
static struct tdesc_reg * tdesc_find_register_early(const struct tdesc_feature *feature, const char *name)
struct cmd_list_element * maintenancechecklist
std::string m_filename_after_features
int tdesc_register_size(const struct tdesc_feature *feature, const char *name)
struct type * builtin_uint16
void set_gdbarch_register_reggroup_p(struct gdbarch *gdbarch, gdbarch_register_reggroup_p_ftype register_reggroup_p)
struct cmd_list_element * add_cmd(const char *name, enum command_class theclass, const char *doc, struct cmd_list_element **list)
static struct cmd_list_element * tdesc_show_cmdlist
int gdbarch_long_bit(struct gdbarch *gdbarch)
void filename_completer(struct cmd_list_element *ignore, completion_tracker &tracker, const char *text, const char *word)
void accept(tdesc_element_visitor &v) const override
property(const std::string &key_, const std::string &value_)
struct reggroup *const restore_reggroup
struct gdbarch_data * gdbarch_data_register_pre_init(gdbarch_data_pre_init_ftype *pre_init)
static int tdesc_remote_register_number(struct gdbarch *gdbarch, int regno)
int gdbarch_num_regs(struct gdbarch *gdbarch)
gdbarch_register_name_ftype * pseudo_register_name
static void set_tdesc_filename_cmd(const char *args, int from_tty, struct cmd_list_element *c)
static void unset_tdesc_cmd(const char *args, int from_tty)
bool operator!=(const tdesc_reg &other) const
#define SET_FIELD_BITPOS(thisfld, bitpos)
bool m_printed_element_type
void tdesc_data_cleanup(void *data_untyped)
virtual void visit_post(const target_desc *e)=0
const char * tdesc_feature_name(const struct tdesc_feature *feature)
void visit_pre(const tdesc_feature *e) override
struct type * builtin_int32
void accept(tdesc_element_visitor &v) const override
struct type * builtin_short
void printf_filtered(const char *format,...)
static struct cmd_list_element * tdesc_unset_cmdlist
void tdesc_add_bitfield(tdesc_type_with_fields *type, const char *field_name, int start, int end)
std::vector< property > properties
enum gdb_osabi osabi_from_tdesc_string(const char *name)
struct cmd_list_element * add_prefix_cmd(const char *name, enum command_class theclass, cmd_const_cfunc_ftype *fun, const char *doc, struct cmd_list_element **prefixlist, const char *prefixname, int allow_unknown, struct cmd_list_element **list)
bool operator==(const tdesc_type &other) const
bool operator==(const tdesc_reg &other) const
int gdbarch_num_pseudo_regs(struct gdbarch *gdbarch)
int tdesc_numbered_register(const struct tdesc_feature *feature, struct tdesc_arch_data *data, int regno, const char *name)
struct cmd_list_element * setlist
struct type * builtin_int128
type * make_gdb_type_flags(struct gdbarch *gdbarch) const
struct cleanup * make_cleanup_free_target_description(struct target_desc *target_desc)
void append_composite_type_field(struct type *t, const char *name, struct type *field)
void set_gdbarch_register_type(struct gdbarch *gdbarch, gdbarch_register_type_ftype register_type)
struct type * arch_flags_type(struct gdbarch *gdbarch, const char *name, int bit)
struct field * append_composite_type_field_raw(struct type *t, const char *name, struct type *field)
int tdesc_numbered_register_choices(const struct tdesc_feature *feature, struct tdesc_arch_data *data, int regno, const char *const names[])
const struct target_desc * target_read_description(struct target_ops *target)
tdesc_type_with_fields * tdesc_create_flags(struct tdesc_feature *feature, const char *name, int size)
std::unique_ptr< T, xfree_deleter< T > > unique_xmalloc_ptr
tdesc_type(const std::string &name_, enum tdesc_type_kind kind_)
struct target_ops current_target
bool m_printed_type_with_fields
#define target_desc_fetched
void target_clear_description(void)
bool operator!=(const tdesc_type &other) const
std::vector< tdesc_type_up > types
void tdesc_create_reg(struct tdesc_feature *feature, const char *name, int regnum, int save_restore, const char *group, int bitsize, const char *type)
void tdesc_add_enum_value(tdesc_type_with_fields *type, int value, const char *name)
void set_cmd_completer(struct cmd_list_element *cmd, completer_ftype *completer)
struct type * arch_float_type(struct gdbarch *gdbarch, int bit, const char *name, const struct floatformat **floatformats)
type * make_gdb_type(struct gdbarch *gdbarch) const override
static void maintenance_check_xml_descriptions(const char *dir, int from_tty)
void visit_post(const target_desc *e) override
struct cmd_list_element * showlist
void accept(tdesc_element_visitor &v) const override
static void free_target_description(void *arg)
#define gdb_assert_not_reached(message)
struct type * builtin_int16
std::vector< const bfd_arch_info * > compatible
struct cleanup * make_cleanup(make_cleanup_ftype *function, void *arg)
struct cmd_list_element * unsetlist
#define target_description_filename
struct target_desc * allocate_target_description(void)
std::unique_ptr< tdesc_feature > tdesc_feature_up
struct type * init_vector_type(struct type *elt_type, int n)
struct type * builtin_int0
bool operator==(const tdesc_feature &other) const
struct type * builtin_uint32
struct type * tdesc_find_type(struct gdbarch *gdbarch, const char *id)
std::vector< tdesc_type_field > fields
const struct target_desc * tdesc
int gdbarch_double_bit(struct gdbarch *gdbarch)
struct type * builtin_long
static int startswith(const char *string, const char *pattern)
static struct target_desc_info * get_tdesc_info(struct inferior *inf)
void tdesc_add_flag(tdesc_type_with_fields *type, int start, const char *flag_name)
bool operator==(const target_desc &other) const
tdesc_type_with_fields * tdesc_create_struct(struct tdesc_feature *feature, const char *name)
void visit_pre(const target_desc *e) override
struct tdesc_feature * tdesc_create_feature(struct target_desc *tdesc, const char *name, const char *xml)
type * make_gdb_type(struct gdbarch *gdbarch) const override
void printf_unfiltered(const char *format,...)
tdesc_type_builtin(const std::string &name, enum tdesc_type_kind kind)
DISABLE_COPY_AND_ASSIGN(tdesc_feature)
virtual ~tdesc_feature()=default
const struct bfd_arch_info * arch
#define FIELD_BITSIZE(thisfld)
void visit_post(const target_desc *e) override
void visit(const tdesc_type_vector *type) override
enum tdesc_type_kind kind
void set_tdesc_property(struct target_desc *target_desc, const char *key, const char *value)
struct type * builtin_bool
struct type * builtin_uint128
struct cmd_list_element * maintenanceprintlist
void target_desc_info_free(struct target_desc_info *tdesc_info)
const struct target_desc * target_current_description(void)
void cmd_show_list(struct cmd_list_element *list, int from_tty, const char *prefix)
gdbarch_register_reggroup_p_ftype * pseudo_register_reggroup_p
const struct target_desc * target_desc
#define current_target_desc
const struct target_desc * file_read_description_xml(const char *filename)
struct type *() gdbarch_register_type_ftype(struct gdbarch *gdbarch, int reg_nr)
const struct floatformat * floatformats_ieee_single[BFD_ENDIAN_UNKNOWN]
static void show_tdesc_cmd(const char *args, int from_tty)
void vprintf_unfiltered(const char *format, va_list args)
static struct tdesc_arch_reg * tdesc_find_arch_register(struct gdbarch *gdbarch, int regno)
reggroup * reggroup_find(struct gdbarch *gdbarch, const char *name)
void tdesc_use_registers(struct gdbarch *gdbarch, const struct target_desc *target_desc, struct tdesc_arch_data *early_data)
int() gdbarch_register_reggroup_p_ftype(struct gdbarch *gdbarch, int regnum, struct reggroup *reggroup)
void set_tdesc_architecture(struct target_desc *target_desc, const char *name)
void help_list(struct cmd_list_element *list, const char *cmdtype, enum command_class theclass, struct ui_file *stream)
const struct floatformat * floatformats_i387_ext[BFD_ENDIAN_UNKNOWN]
struct type * builtin_char
void visit_pre(const tdesc_feature *e) override
struct reggroup * reggroup_gdbarch_new(struct gdbarch *gdbarch, const char *name, enum reggroup_type type)
struct tdesc_type * tdesc_named_type(const struct tdesc_feature *feature, const char *id)
void _initialize_target_descriptions(void)
struct type * builtin_double
const struct target_desc * target_read_description_xml(struct target_ops *ops)
static void set_tdesc_cmd(const char *args, int from_tty)
enum gdb_osabi tdesc_osabi(const struct target_desc *target_desc)
type * make_gdb_type_enum(struct gdbarch *gdbarch) const
void visit_post(const tdesc_feature *e) override
print_c_tdesc(std::string &filename_after_features)
void gdbarch_info_init(struct gdbarch_info *info)
struct type * builtin_data_ptr
void visit_pre(const target_desc *e) override
tdesc_type_field(const std::string &name_, tdesc_type *type_, int start_, int end_)
int gdbarch_long_long_bit(struct gdbarch *gdbarch)
struct type * tdesc_register_type(struct gdbarch *gdbarch, int regno)
std::vector< tdesc_arch_reg > arch_regs
int gdbarch_float_bit(struct gdbarch *gdbarch)
void visit(const tdesc_type_builtin *type) override
struct tdesc_type * element_type
void visit_post(const tdesc_feature *e) override
const struct bfd_arch_info * tdesc_architecture(const struct target_desc *target_desc)
virtual void visit_pre(const target_desc *e)=0
static void * tdesc_data_init(struct obstack *obstack)
#define TYPE_TAG_NAME(type)
type * make_gdb_type_struct(struct gdbarch *gdbarch) const
struct tdesc_arch_data * tdesc_data_alloc(void)
const char * gdbarch_osabi_name(enum gdb_osabi osabi)
int gdbarch_bits_big_endian(struct gdbarch *gdbarch)
struct type * builtin_long_long
static PyObject * field_name(struct type *type, int field)
const struct tdesc_feature * tdesc_find_feature(const struct target_desc *target_desc, const char *name)
struct type * builtin_int64
DISABLE_COPY_AND_ASSIGN(tdesc_type)
void accept(tdesc_element_visitor &v) const override
void visit(const tdesc_type_with_fields *type) override
void set_gdbarch_remote_register_number(struct gdbarch *gdbarch, gdbarch_remote_register_number_ftype remote_register_number)
print_c_feature(std::string &file)
void set_tdesc_pseudo_register_reggroup_p(struct gdbarch *gdbarch, gdbarch_register_reggroup_p_ftype *pseudo_reggroup_p)
static char * tdesc_filename_cmd_string
int default_register_reggroup_p(struct gdbarch *gdbarch, int regnum, struct reggroup *group)
struct reggroup *const save_reggroup
#define OBSTACK_ZALLOC(OBSTACK, TYPE)
const char *() gdbarch_register_name_ftype(struct gdbarch *gdbarch, int regnr)
#define TYPE_LENGTH(thistype)
void printf_field_type_assignment(const char *fmt,...)
static void maint_print_c_tdesc_cmd(const char *args, int from_tty)
std::unique_ptr< tdesc_type > tdesc_type_up
static struct tdesc_type * tdesc_predefined_type(enum tdesc_type_kind kind)
struct type * builtin_uint64
void tdesc_add_compatible(struct target_desc *target_desc, const struct bfd_arch_info *compatible)
gdbarch_register_type_ftype * pseudo_register_type
int gdbarch_long_double_bit(struct gdbarch *gdbarch)
bool operator!=(const tdesc_feature &other) const
struct type * builtin_int8
void target_find_description(void)
const struct floatformat * floatformats_arm_ext[BFD_ENDIAN_UNKNOWN]
static struct gdbarch_data * tdesc_data
tdesc_type_with_fields(const std::string &name, tdesc_type_kind kind, int size_=0)
int gdbarch_short_bit(struct gdbarch *gdbarch)
std::unique_ptr< tdesc_reg > tdesc_reg_up
void visit(const tdesc_reg *reg) override
int tdesc_has_registers(const struct target_desc *target_desc)
tdesc_type_with_fields * tdesc_create_union(struct tdesc_feature *feature, const char *name)
void set_gdbarch_register_name(struct gdbarch *gdbarch, gdbarch_register_name_ftype register_name)
void error(const char *fmt,...)
static struct cmd_list_element * tdesc_set_cmdlist
const char * reggroup_name(struct reggroup *group)
struct type * arch_composite_type(struct gdbarch *gdbarch, const char *name, enum type_code code)
virtual void accept(tdesc_element_visitor &v) const =0
int tdesc_unnumbered_register(const struct tdesc_feature *feature, const char *name)
const char * tdesc_property(const struct target_desc *target_desc, const char *key)
struct type * builtin_float
const struct target_desc * gdbarch_target_desc(struct gdbarch *gdbarch)
void set_tdesc_osabi(struct target_desc *target_desc, const char *name)
struct type * builtin_int
bool m_printed_field_type