+2017-12-05 Simon Marchi <simon.marchi@polymtl.ca>
+
+ * target-descriptions.c (struct tdesc_type): Use default
+ destructor.
+ <u>: Remove.
+ <accept>: Remove.
+ (struct tdesc_type_builtin): New.
+ (struct tdesc_type_vector): New.
+ (struct tdesc_type_with_fields): New.
+ (tdesc_predefined_types): Change type to tdesc_type_builtin[].
+ (tdesc_gdb_type): Remove.
+ (tdesc_register_type): Adjust.
+ (tdesc_create_vector): Create tdesc_type_vector.
+ (tdesc_create_struct): Create tdesc_type_with_fields.
+ (tdesc_set_struct_size): Change parameter type.
+ (tdesc_create_union): Create tdesc_type_with_fields.
+ (tdesc_create_flags): Likewise.
+ (tdesc_create_enum): Likewise.
+ (tdesc_add_field): Change parameter type.
+ (tdesc_add_typed_bitfield): Likewise.
+ (tdesc_add_bitfield): Likewise.
+ (tdesc_add_flag): Likewise.
+ (tdesc_add_enum_value): Likewise.
+ (print_c_tdesc) <visit>: Remove overload with tdesc_type
+ parameter, add overloads for tdesc_type_builtin,
+ tdesc_type_with_fields and tdesc_type_vector.
+ <m_printed_type>: Remove.
+ <m_printed_element_type, m_printed_type_with_fields>: Add.
+ * target-descriptions.h (tdesc_create_enum): Change return type.
+ (tdesc_add_typed_bitfield): Change parameter type.
+ (tdesc_add_enum_value): Change parameter type.
+ * xml-tdesc.c (struct tdesc_parsing_data) <current_type>: Change
+ type to tdesc_type_with_fields.
+ (tdesc_start_struct): Adjust.
+ (tdesc_start_flags): Adjust.
+ (tdesc_start_enum): Adjust.
+ (tdesc_start_field): Adjust.
+ * arch/tdesc.h (struct tdesc_type_builtin): Forward-declare.
+ (struct tdesc_type_vector): Forward-declare.
+ (struct tdesc_type_with_fields): Forward-declare.
+ (tdesc_create_struct): Change return type.
+ (tdesc_create_union): Likewise.
+ (tdesc_create_flags): Likewise.
+ (tdesc_add_field): Change parameter type.
+ (tdesc_set_struct_size): Likewise.
+ (tdesc_add_bitfield): Likewise.
+ (tdesc_add_flag): Likewise.
+ * features: Re-generate C files.
+
2017-12-05 Simon Marchi <simon.marchi@polymtl.ca>
* target-descriptions.c (tdesc_arch_reg): Remove typedef.
struct tdesc_feature;
struct tdesc_type;
+struct tdesc_type_builtin;
+struct tdesc_type_vector;
+struct tdesc_type_with_fields;
struct tdesc_reg;
struct target_desc;
int count);
/* Return the created struct tdesc_type named NAME in FEATURE. */
-struct tdesc_type *tdesc_create_struct (struct tdesc_feature *feature,
- const char *name);
+tdesc_type_with_fields *tdesc_create_struct (struct tdesc_feature *feature,
+ const char *name);
/* Return the created union tdesc_type named NAME in FEATURE. */
-struct tdesc_type *tdesc_create_union (struct tdesc_feature *feature,
- const char *name);
+tdesc_type_with_fields *tdesc_create_union (struct tdesc_feature *feature,
+ const char *name);
/* Return the created flags tdesc_type named NAME in FEATURE. */
-struct tdesc_type *tdesc_create_flags (struct tdesc_feature *feature,
- const char *name,
- int size);
+tdesc_type_with_fields *tdesc_create_flags (struct tdesc_feature *feature,
+ const char *name,
+ int size);
/* Add a new field to TYPE. FIELD_NAME is its name, and FIELD_TYPE is
its type. */
-void tdesc_add_field (struct tdesc_type *type, const char *field_name,
+void tdesc_add_field (tdesc_type_with_fields *type, const char *field_name,
struct tdesc_type *field_type);
/* Set the total length of TYPE. Structs which contain bitfields may
omit the reserved bits, so the end of the last field may not
suffice. */
-void tdesc_set_struct_size (struct tdesc_type *type, int size);
+void tdesc_set_struct_size (tdesc_type_with_fields *type, int size);
/* Add a new untyped bitfield to TYPE.
Untyped bitfields become either uint32 or uint64 depending on the size
of the underlying type. */
-void tdesc_add_bitfield (struct tdesc_type *type, const char *field_name,
+void tdesc_add_bitfield (tdesc_type_with_fields *type, const char *field_name,
int start, int end);
/* A flag is just a typed(bool) single-bit bitfield.
This function is kept to minimize changes in generated files. */
-void tdesc_add_flag (struct tdesc_type *type, int start,
+void tdesc_add_flag (tdesc_type_with_fields *type, int start,
const char *flag_name);
/* Create a register in feature FEATURE. */
struct tdesc_feature *feature;
feature = tdesc_create_feature (result, "org.gnu.gdb.aarch64.core", "aarch64-core.xml");
- struct tdesc_type *field_type;
- struct tdesc_type *type;
- type = tdesc_create_flags (feature, "cpsr_flags", 4);
- tdesc_add_flag (type, 0, "SP");
- tdesc_add_flag (type, 1, "");
- tdesc_add_bitfield (type, "EL", 2, 3);
- tdesc_add_flag (type, 4, "nRW");
- tdesc_add_flag (type, 5, "");
- tdesc_add_flag (type, 6, "F");
- tdesc_add_flag (type, 7, "I");
- tdesc_add_flag (type, 8, "A");
- tdesc_add_flag (type, 9, "D");
- tdesc_add_flag (type, 20, "IL");
- tdesc_add_flag (type, 21, "SS");
- tdesc_add_flag (type, 28, "V");
- tdesc_add_flag (type, 29, "C");
- tdesc_add_flag (type, 30, "Z");
- tdesc_add_flag (type, 31, "N");
+ tdesc_type_with_fields *type_with_fields;
+ tdesc_type *field_type;
+ type_with_fields = tdesc_create_flags (feature, "cpsr_flags", 4);
+ tdesc_add_flag (type_with_fields, 0, "SP");
+ tdesc_add_flag (type_with_fields, 1, "");
+ tdesc_add_bitfield (type_with_fields, "EL", 2, 3);
+ tdesc_add_flag (type_with_fields, 4, "nRW");
+ tdesc_add_flag (type_with_fields, 5, "");
+ tdesc_add_flag (type_with_fields, 6, "F");
+ tdesc_add_flag (type_with_fields, 7, "I");
+ tdesc_add_flag (type_with_fields, 8, "A");
+ tdesc_add_flag (type_with_fields, 9, "D");
+ tdesc_add_flag (type_with_fields, 20, "IL");
+ tdesc_add_flag (type_with_fields, 21, "SS");
+ tdesc_add_flag (type_with_fields, 28, "V");
+ tdesc_add_flag (type_with_fields, 29, "C");
+ tdesc_add_flag (type_with_fields, 30, "Z");
+ tdesc_add_flag (type_with_fields, 31, "N");
tdesc_create_reg (feature, "x0", regnum++, 1, NULL, 64, "int");
tdesc_create_reg (feature, "x1", regnum++, 1, NULL, 64, "int");
struct tdesc_feature *feature;
feature = tdesc_create_feature (result, "org.gnu.gdb.aarch64.fpu", "aarch64-fpu.xml");
- struct tdesc_type *field_type;
- field_type = tdesc_named_type (feature, "ieee_double");
- tdesc_create_vector (feature, "v2d", field_type, 2);
+ tdesc_type *element_type;
+ element_type = tdesc_named_type (feature, "ieee_double");
+ tdesc_create_vector (feature, "v2d", element_type, 2);
- field_type = tdesc_named_type (feature, "uint64");
- tdesc_create_vector (feature, "v2u", field_type, 2);
+ element_type = tdesc_named_type (feature, "uint64");
+ tdesc_create_vector (feature, "v2u", element_type, 2);
- field_type = tdesc_named_type (feature, "int64");
- tdesc_create_vector (feature, "v2i", field_type, 2);
+ element_type = tdesc_named_type (feature, "int64");
+ tdesc_create_vector (feature, "v2i", element_type, 2);
- field_type = tdesc_named_type (feature, "ieee_single");
- tdesc_create_vector (feature, "v4f", field_type, 4);
+ element_type = tdesc_named_type (feature, "ieee_single");
+ tdesc_create_vector (feature, "v4f", element_type, 4);
- field_type = tdesc_named_type (feature, "uint32");
- tdesc_create_vector (feature, "v4u", field_type, 4);
+ element_type = tdesc_named_type (feature, "uint32");
+ tdesc_create_vector (feature, "v4u", element_type, 4);
- field_type = tdesc_named_type (feature, "int32");
- tdesc_create_vector (feature, "v4i", field_type, 4);
+ element_type = tdesc_named_type (feature, "int32");
+ tdesc_create_vector (feature, "v4i", element_type, 4);
- field_type = tdesc_named_type (feature, "uint16");
- tdesc_create_vector (feature, "v8u", field_type, 8);
+ element_type = tdesc_named_type (feature, "uint16");
+ tdesc_create_vector (feature, "v8u", element_type, 8);
- field_type = tdesc_named_type (feature, "int16");
- tdesc_create_vector (feature, "v8i", field_type, 8);
+ element_type = tdesc_named_type (feature, "int16");
+ tdesc_create_vector (feature, "v8i", element_type, 8);
- field_type = tdesc_named_type (feature, "uint8");
- tdesc_create_vector (feature, "v16u", field_type, 16);
+ element_type = tdesc_named_type (feature, "uint8");
+ tdesc_create_vector (feature, "v16u", element_type, 16);
- field_type = tdesc_named_type (feature, "int8");
- tdesc_create_vector (feature, "v16i", field_type, 16);
+ element_type = tdesc_named_type (feature, "int8");
+ tdesc_create_vector (feature, "v16i", element_type, 16);
- field_type = tdesc_named_type (feature, "uint128");
- tdesc_create_vector (feature, "v1u", field_type, 1);
+ element_type = tdesc_named_type (feature, "uint128");
+ tdesc_create_vector (feature, "v1u", element_type, 1);
- field_type = tdesc_named_type (feature, "int128");
- tdesc_create_vector (feature, "v1i", field_type, 1);
+ element_type = tdesc_named_type (feature, "int128");
+ tdesc_create_vector (feature, "v1i", element_type, 1);
- struct tdesc_type *type;
- type = tdesc_create_union (feature, "vnd");
+ tdesc_type_with_fields *type_with_fields;
+ tdesc_type *field_type;
+ type_with_fields = tdesc_create_union (feature, "vnd");
field_type = tdesc_named_type (feature, "v2d");
- tdesc_add_field (type, "f", field_type);
+ tdesc_add_field (type_with_fields, "f", field_type);
field_type = tdesc_named_type (feature, "v2u");
- tdesc_add_field (type, "u", field_type);
+ tdesc_add_field (type_with_fields, "u", field_type);
field_type = tdesc_named_type (feature, "v2i");
- tdesc_add_field (type, "s", field_type);
+ tdesc_add_field (type_with_fields, "s", field_type);
- type = tdesc_create_union (feature, "vns");
+ type_with_fields = tdesc_create_union (feature, "vns");
field_type = tdesc_named_type (feature, "v4f");
- tdesc_add_field (type, "f", field_type);
+ tdesc_add_field (type_with_fields, "f", field_type);
field_type = tdesc_named_type (feature, "v4u");
- tdesc_add_field (type, "u", field_type);
+ tdesc_add_field (type_with_fields, "u", field_type);
field_type = tdesc_named_type (feature, "v4i");
- tdesc_add_field (type, "s", field_type);
+ tdesc_add_field (type_with_fields, "s", field_type);
- type = tdesc_create_union (feature, "vnh");
+ type_with_fields = tdesc_create_union (feature, "vnh");
field_type = tdesc_named_type (feature, "v8u");
- tdesc_add_field (type, "u", field_type);
+ tdesc_add_field (type_with_fields, "u", field_type);
field_type = tdesc_named_type (feature, "v8i");
- tdesc_add_field (type, "s", field_type);
+ tdesc_add_field (type_with_fields, "s", field_type);
- type = tdesc_create_union (feature, "vnb");
+ type_with_fields = tdesc_create_union (feature, "vnb");
field_type = tdesc_named_type (feature, "v16u");
- tdesc_add_field (type, "u", field_type);
+ tdesc_add_field (type_with_fields, "u", field_type);
field_type = tdesc_named_type (feature, "v16i");
- tdesc_add_field (type, "s", field_type);
+ tdesc_add_field (type_with_fields, "s", field_type);
- type = tdesc_create_union (feature, "vnq");
+ type_with_fields = tdesc_create_union (feature, "vnq");
field_type = tdesc_named_type (feature, "v1u");
- tdesc_add_field (type, "u", field_type);
+ tdesc_add_field (type_with_fields, "u", field_type);
field_type = tdesc_named_type (feature, "v1i");
- tdesc_add_field (type, "s", field_type);
+ tdesc_add_field (type_with_fields, "s", field_type);
- type = tdesc_create_union (feature, "aarch64v");
+ type_with_fields = tdesc_create_union (feature, "aarch64v");
field_type = tdesc_named_type (feature, "vnd");
- tdesc_add_field (type, "d", field_type);
+ tdesc_add_field (type_with_fields, "d", field_type);
field_type = tdesc_named_type (feature, "vns");
- tdesc_add_field (type, "s", field_type);
+ tdesc_add_field (type_with_fields, "s", field_type);
field_type = tdesc_named_type (feature, "vnh");
- tdesc_add_field (type, "h", field_type);
+ tdesc_add_field (type_with_fields, "h", field_type);
field_type = tdesc_named_type (feature, "vnb");
- tdesc_add_field (type, "b", field_type);
+ tdesc_add_field (type_with_fields, "b", field_type);
field_type = tdesc_named_type (feature, "vnq");
- tdesc_add_field (type, "q", field_type);
+ tdesc_add_field (type_with_fields, "q", field_type);
regnum = 34;
tdesc_create_reg (feature, "v0", regnum++, 1, NULL, 128, "aarch64v");
tdesc_create_reg (feature, "pcl", 33, 1, NULL, 32, "code_ptr");
feature = tdesc_create_feature (result, "org.gnu.gdb.arc.aux-minimal");
- struct tdesc_type *field_type;
- struct tdesc_type *type;
- type = tdesc_create_flags (feature, "status32_type", 4);
- tdesc_add_flag (type, 0, "H");
- tdesc_add_bitfield (type, "E", 1, 2);
- tdesc_add_bitfield (type, "A", 3, 4);
- tdesc_add_flag (type, 5, "AE");
- tdesc_add_flag (type, 6, "DE");
- tdesc_add_flag (type, 7, "U");
- tdesc_add_flag (type, 8, "V");
- tdesc_add_flag (type, 9, "C");
- tdesc_add_flag (type, 10, "N");
- tdesc_add_flag (type, 11, "Z");
- tdesc_add_flag (type, 12, "L");
- tdesc_add_flag (type, 13, "R");
- tdesc_add_flag (type, 14, "SE");
+ tdesc_type_with_fields *type_with_fields;
+ tdesc_type *field_type;
+ type_with_fields = tdesc_create_flags (feature, "status32_type", 4);
+ tdesc_add_flag (type_with_fields, 0, "H");
+ tdesc_add_bitfield (type_with_fields, "E", 1, 2);
+ tdesc_add_bitfield (type_with_fields, "A", 3, 4);
+ tdesc_add_flag (type_with_fields, 5, "AE");
+ tdesc_add_flag (type_with_fields, 6, "DE");
+ tdesc_add_flag (type_with_fields, 7, "U");
+ tdesc_add_flag (type_with_fields, 8, "V");
+ tdesc_add_flag (type_with_fields, 9, "C");
+ tdesc_add_flag (type_with_fields, 10, "N");
+ tdesc_add_flag (type_with_fields, 11, "Z");
+ tdesc_add_flag (type_with_fields, 12, "L");
+ tdesc_add_flag (type_with_fields, 13, "R");
+ tdesc_add_flag (type_with_fields, 14, "SE");
tdesc_create_reg (feature, "pc", 34, 1, NULL, 32, "code_ptr");
tdesc_create_reg (feature, "status32", 35, 1, NULL, 32, "status32_type");
tdesc_create_reg (feature, "pcl", 33, 1, NULL, 32, "code_ptr");
feature = tdesc_create_feature (result, "org.gnu.gdb.arc.aux-minimal");
- struct tdesc_type *field_type;
- struct tdesc_type *type;
- type = tdesc_create_flags (feature, "status32_type", 4);
- tdesc_add_flag (type, 0, "H");
- tdesc_add_bitfield (type, "E", 1, 4);
- tdesc_add_flag (type, 5, "AE");
- tdesc_add_flag (type, 6, "DE");
- tdesc_add_flag (type, 7, "U");
- tdesc_add_flag (type, 8, "V");
- tdesc_add_flag (type, 9, "C");
- tdesc_add_flag (type, 10, "N");
- tdesc_add_flag (type, 11, "Z");
- tdesc_add_flag (type, 12, "L");
- tdesc_add_flag (type, 13, "DZ");
- tdesc_add_flag (type, 14, "SC");
- tdesc_add_flag (type, 15, "ES");
- tdesc_add_bitfield (type, "RB", 16, 18);
- tdesc_add_flag (type, 19, "AD");
- tdesc_add_flag (type, 20, "US");
- tdesc_add_flag (type, 31, "IE");
+ tdesc_type_with_fields *type_with_fields;
+ tdesc_type *field_type;
+ type_with_fields = tdesc_create_flags (feature, "status32_type", 4);
+ tdesc_add_flag (type_with_fields, 0, "H");
+ tdesc_add_bitfield (type_with_fields, "E", 1, 4);
+ tdesc_add_flag (type_with_fields, 5, "AE");
+ tdesc_add_flag (type_with_fields, 6, "DE");
+ tdesc_add_flag (type_with_fields, 7, "U");
+ tdesc_add_flag (type_with_fields, 8, "V");
+ tdesc_add_flag (type_with_fields, 9, "C");
+ tdesc_add_flag (type_with_fields, 10, "N");
+ tdesc_add_flag (type_with_fields, 11, "Z");
+ tdesc_add_flag (type_with_fields, 12, "L");
+ tdesc_add_flag (type_with_fields, 13, "DZ");
+ tdesc_add_flag (type_with_fields, 14, "SC");
+ tdesc_add_flag (type_with_fields, 15, "ES");
+ tdesc_add_bitfield (type_with_fields, "RB", 16, 18);
+ tdesc_add_flag (type_with_fields, 19, "AD");
+ tdesc_add_flag (type_with_fields, 20, "US");
+ tdesc_add_flag (type_with_fields, 31, "IE");
tdesc_create_reg (feature, "pc", 34, 1, NULL, 32, "code_ptr");
tdesc_create_reg (feature, "status32", 35, 1, NULL, 32, "status32_type");
tdesc_create_reg (feature, "cpsr", 25, 1, NULL, 32, "int");
feature = tdesc_create_feature (result, "org.gnu.gdb.xscale.iwmmxt");
- struct tdesc_type *field_type;
- field_type = tdesc_named_type (feature, "uint8");
- tdesc_create_vector (feature, "iwmmxt_v8u8", field_type, 8);
+ tdesc_type *element_type;
+ element_type = tdesc_named_type (feature, "uint8");
+ tdesc_create_vector (feature, "iwmmxt_v8u8", element_type, 8);
- field_type = tdesc_named_type (feature, "uint16");
- tdesc_create_vector (feature, "iwmmxt_v4u16", field_type, 4);
+ element_type = tdesc_named_type (feature, "uint16");
+ tdesc_create_vector (feature, "iwmmxt_v4u16", element_type, 4);
- field_type = tdesc_named_type (feature, "uint32");
- tdesc_create_vector (feature, "iwmmxt_v2u32", field_type, 2);
+ element_type = tdesc_named_type (feature, "uint32");
+ tdesc_create_vector (feature, "iwmmxt_v2u32", element_type, 2);
- struct tdesc_type *type;
- type = tdesc_create_union (feature, "iwmmxt_vec64i");
+ tdesc_type_with_fields *type_with_fields;
+ tdesc_type *field_type;
+ type_with_fields = tdesc_create_union (feature, "iwmmxt_vec64i");
field_type = tdesc_named_type (feature, "iwmmxt_v8u8");
- tdesc_add_field (type, "u8", field_type);
+ tdesc_add_field (type_with_fields, "u8", field_type);
field_type = tdesc_named_type (feature, "iwmmxt_v4u16");
- tdesc_add_field (type, "u16", field_type);
+ tdesc_add_field (type_with_fields, "u16", field_type);
field_type = tdesc_named_type (feature, "iwmmxt_v2u32");
- tdesc_add_field (type, "u32", field_type);
+ tdesc_add_field (type_with_fields, "u32", field_type);
field_type = tdesc_named_type (feature, "uint64");
- tdesc_add_field (type, "u64", field_type);
+ tdesc_add_field (type_with_fields, "u64", field_type);
tdesc_create_reg (feature, "wR0", 26, 1, NULL, 64, "iwmmxt_vec64i");
tdesc_create_reg (feature, "wR1", 27, 1, NULL, 64, "iwmmxt_vec64i");
struct tdesc_feature *feature;
feature = tdesc_create_feature (result, "org.gnu.gdb.i386.avx512", "32bit-avx512.xml");
- struct tdesc_type *field_type;
- field_type = tdesc_named_type (feature, "uint128");
- tdesc_create_vector (feature, "v2ui128", field_type, 2);
+ tdesc_type *element_type;
+ element_type = tdesc_named_type (feature, "uint128");
+ tdesc_create_vector (feature, "v2ui128", element_type, 2);
tdesc_create_reg (feature, "k0", regnum++, 1, NULL, 64, "uint64");
tdesc_create_reg (feature, "k1", regnum++, 1, NULL, 64, "uint64");
struct tdesc_feature *feature;
feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core", "32bit-core.xml");
- struct tdesc_type *field_type;
- struct tdesc_type *type;
- type = tdesc_create_flags (feature, "i386_eflags", 4);
- tdesc_add_flag (type, 0, "CF");
- tdesc_add_flag (type, 1, "");
- tdesc_add_flag (type, 2, "PF");
- tdesc_add_flag (type, 4, "AF");
- tdesc_add_flag (type, 6, "ZF");
- tdesc_add_flag (type, 7, "SF");
- tdesc_add_flag (type, 8, "TF");
- tdesc_add_flag (type, 9, "IF");
- tdesc_add_flag (type, 10, "DF");
- tdesc_add_flag (type, 11, "OF");
- tdesc_add_flag (type, 14, "NT");
- tdesc_add_flag (type, 16, "RF");
- tdesc_add_flag (type, 17, "VM");
- tdesc_add_flag (type, 18, "AC");
- tdesc_add_flag (type, 19, "VIF");
- tdesc_add_flag (type, 20, "VIP");
- tdesc_add_flag (type, 21, "ID");
+ tdesc_type_with_fields *type_with_fields;
+ tdesc_type *field_type;
+ type_with_fields = tdesc_create_flags (feature, "i386_eflags", 4);
+ tdesc_add_flag (type_with_fields, 0, "CF");
+ tdesc_add_flag (type_with_fields, 1, "");
+ tdesc_add_flag (type_with_fields, 2, "PF");
+ tdesc_add_flag (type_with_fields, 4, "AF");
+ tdesc_add_flag (type_with_fields, 6, "ZF");
+ tdesc_add_flag (type_with_fields, 7, "SF");
+ tdesc_add_flag (type_with_fields, 8, "TF");
+ tdesc_add_flag (type_with_fields, 9, "IF");
+ tdesc_add_flag (type_with_fields, 10, "DF");
+ tdesc_add_flag (type_with_fields, 11, "OF");
+ tdesc_add_flag (type_with_fields, 14, "NT");
+ tdesc_add_flag (type_with_fields, 16, "RF");
+ tdesc_add_flag (type_with_fields, 17, "VM");
+ tdesc_add_flag (type_with_fields, 18, "AC");
+ tdesc_add_flag (type_with_fields, 19, "VIF");
+ tdesc_add_flag (type_with_fields, 20, "VIP");
+ tdesc_add_flag (type_with_fields, 21, "ID");
tdesc_create_reg (feature, "eax", regnum++, 1, NULL, 32, "int32");
tdesc_create_reg (feature, "ecx", regnum++, 1, NULL, 32, "int32");
struct tdesc_feature *feature;
feature = tdesc_create_feature (result, "org.gnu.gdb.i386.mpx", "32bit-mpx.xml");
- struct tdesc_type *field_type;
- struct tdesc_type *type;
- type = tdesc_create_struct (feature, "br128");
+ tdesc_type_with_fields *type_with_fields;
+ tdesc_type *field_type;
+ type_with_fields = tdesc_create_struct (feature, "br128");
field_type = tdesc_named_type (feature, "uint64");
- tdesc_add_field (type, "lbound", field_type);
+ tdesc_add_field (type_with_fields, "lbound", field_type);
field_type = tdesc_named_type (feature, "uint64");
- tdesc_add_field (type, "ubound_raw", field_type);
+ tdesc_add_field (type_with_fields, "ubound_raw", field_type);
- type = tdesc_create_struct (feature, "_bndstatus");
- tdesc_set_struct_size (type, 8);
- tdesc_add_bitfield (type, "bde", 2, 31);
- tdesc_add_bitfield (type, "error", 0, 1);
+ type_with_fields = tdesc_create_struct (feature, "_bndstatus");
+ tdesc_set_struct_size (type_with_fields, 8);
+ tdesc_add_bitfield (type_with_fields, "bde", 2, 31);
+ tdesc_add_bitfield (type_with_fields, "error", 0, 1);
- type = tdesc_create_union (feature, "status");
+ type_with_fields = tdesc_create_union (feature, "status");
field_type = tdesc_named_type (feature, "data_ptr");
- tdesc_add_field (type, "raw", field_type);
+ tdesc_add_field (type_with_fields, "raw", field_type);
field_type = tdesc_named_type (feature, "_bndstatus");
- tdesc_add_field (type, "status", field_type);
+ tdesc_add_field (type_with_fields, "status", field_type);
- type = tdesc_create_struct (feature, "_bndcfgu");
- tdesc_set_struct_size (type, 8);
- tdesc_add_bitfield (type, "base", 12, 31);
- tdesc_add_bitfield (type, "reserved", 2, 11);
- tdesc_add_bitfield (type, "preserved", 1, 1);
- tdesc_add_bitfield (type, "enabled", 0, 0);
+ type_with_fields = tdesc_create_struct (feature, "_bndcfgu");
+ tdesc_set_struct_size (type_with_fields, 8);
+ tdesc_add_bitfield (type_with_fields, "base", 12, 31);
+ tdesc_add_bitfield (type_with_fields, "reserved", 2, 11);
+ tdesc_add_bitfield (type_with_fields, "preserved", 1, 1);
+ tdesc_add_bitfield (type_with_fields, "enabled", 0, 0);
- type = tdesc_create_union (feature, "cfgu");
+ type_with_fields = tdesc_create_union (feature, "cfgu");
field_type = tdesc_named_type (feature, "data_ptr");
- tdesc_add_field (type, "raw", field_type);
+ tdesc_add_field (type_with_fields, "raw", field_type);
field_type = tdesc_named_type (feature, "_bndcfgu");
- tdesc_add_field (type, "config", field_type);
+ tdesc_add_field (type_with_fields, "config", field_type);
tdesc_create_reg (feature, "bnd0raw", regnum++, 1, NULL, 128, "br128");
tdesc_create_reg (feature, "bnd1raw", regnum++, 1, NULL, 128, "br128");
struct tdesc_feature *feature;
feature = tdesc_create_feature (result, "org.gnu.gdb.i386.sse", "32bit-sse.xml");
- struct tdesc_type *field_type;
- field_type = tdesc_named_type (feature, "ieee_single");
- tdesc_create_vector (feature, "v4f", field_type, 4);
+ tdesc_type *element_type;
+ element_type = tdesc_named_type (feature, "ieee_single");
+ tdesc_create_vector (feature, "v4f", element_type, 4);
- field_type = tdesc_named_type (feature, "ieee_double");
- tdesc_create_vector (feature, "v2d", field_type, 2);
+ element_type = tdesc_named_type (feature, "ieee_double");
+ tdesc_create_vector (feature, "v2d", element_type, 2);
- field_type = tdesc_named_type (feature, "int8");
- tdesc_create_vector (feature, "v16i8", field_type, 16);
+ element_type = tdesc_named_type (feature, "int8");
+ tdesc_create_vector (feature, "v16i8", element_type, 16);
- field_type = tdesc_named_type (feature, "int16");
- tdesc_create_vector (feature, "v8i16", field_type, 8);
+ element_type = tdesc_named_type (feature, "int16");
+ tdesc_create_vector (feature, "v8i16", element_type, 8);
- field_type = tdesc_named_type (feature, "int32");
- tdesc_create_vector (feature, "v4i32", field_type, 4);
+ element_type = tdesc_named_type (feature, "int32");
+ tdesc_create_vector (feature, "v4i32", element_type, 4);
- field_type = tdesc_named_type (feature, "int64");
- tdesc_create_vector (feature, "v2i64", field_type, 2);
+ element_type = tdesc_named_type (feature, "int64");
+ tdesc_create_vector (feature, "v2i64", element_type, 2);
- struct tdesc_type *type;
- type = tdesc_create_union (feature, "vec128");
+ tdesc_type_with_fields *type_with_fields;
+ tdesc_type *field_type;
+ type_with_fields = tdesc_create_union (feature, "vec128");
field_type = tdesc_named_type (feature, "v4f");
- tdesc_add_field (type, "v4_float", field_type);
+ tdesc_add_field (type_with_fields, "v4_float", field_type);
field_type = tdesc_named_type (feature, "v2d");
- tdesc_add_field (type, "v2_double", field_type);
+ tdesc_add_field (type_with_fields, "v2_double", field_type);
field_type = tdesc_named_type (feature, "v16i8");
- tdesc_add_field (type, "v16_int8", field_type);
+ tdesc_add_field (type_with_fields, "v16_int8", field_type);
field_type = tdesc_named_type (feature, "v8i16");
- tdesc_add_field (type, "v8_int16", field_type);
+ tdesc_add_field (type_with_fields, "v8_int16", field_type);
field_type = tdesc_named_type (feature, "v4i32");
- tdesc_add_field (type, "v4_int32", field_type);
+ tdesc_add_field (type_with_fields, "v4_int32", field_type);
field_type = tdesc_named_type (feature, "v2i64");
- tdesc_add_field (type, "v2_int64", field_type);
+ tdesc_add_field (type_with_fields, "v2_int64", field_type);
field_type = tdesc_named_type (feature, "uint128");
- tdesc_add_field (type, "uint128", field_type);
+ tdesc_add_field (type_with_fields, "uint128", field_type);
- type = tdesc_create_flags (feature, "i386_mxcsr", 4);
- tdesc_add_flag (type, 0, "IE");
- tdesc_add_flag (type, 1, "DE");
- tdesc_add_flag (type, 2, "ZE");
- tdesc_add_flag (type, 3, "OE");
- tdesc_add_flag (type, 4, "UE");
- tdesc_add_flag (type, 5, "PE");
- tdesc_add_flag (type, 6, "DAZ");
- tdesc_add_flag (type, 7, "IM");
- tdesc_add_flag (type, 8, "DM");
- tdesc_add_flag (type, 9, "ZM");
- tdesc_add_flag (type, 10, "OM");
- tdesc_add_flag (type, 11, "UM");
- tdesc_add_flag (type, 12, "PM");
- tdesc_add_flag (type, 15, "FZ");
+ type_with_fields = tdesc_create_flags (feature, "i386_mxcsr", 4);
+ tdesc_add_flag (type_with_fields, 0, "IE");
+ tdesc_add_flag (type_with_fields, 1, "DE");
+ tdesc_add_flag (type_with_fields, 2, "ZE");
+ tdesc_add_flag (type_with_fields, 3, "OE");
+ tdesc_add_flag (type_with_fields, 4, "UE");
+ tdesc_add_flag (type_with_fields, 5, "PE");
+ tdesc_add_flag (type_with_fields, 6, "DAZ");
+ tdesc_add_flag (type_with_fields, 7, "IM");
+ tdesc_add_flag (type_with_fields, 8, "DM");
+ tdesc_add_flag (type_with_fields, 9, "ZM");
+ tdesc_add_flag (type_with_fields, 10, "OM");
+ tdesc_add_flag (type_with_fields, 11, "UM");
+ tdesc_add_flag (type_with_fields, 12, "PM");
+ tdesc_add_flag (type_with_fields, 15, "FZ");
regnum = 32;
tdesc_create_reg (feature, "xmm0", regnum++, 1, NULL, 128, "vec128");
struct tdesc_feature *feature;
feature = tdesc_create_feature (result, "org.gnu.gdb.i386.avx512", "64bit-avx512.xml");
- struct tdesc_type *field_type;
- field_type = tdesc_named_type (feature, "ieee_single");
- tdesc_create_vector (feature, "v4f", field_type, 4);
+ tdesc_type *element_type;
+ element_type = tdesc_named_type (feature, "ieee_single");
+ tdesc_create_vector (feature, "v4f", element_type, 4);
- field_type = tdesc_named_type (feature, "ieee_double");
- tdesc_create_vector (feature, "v2d", field_type, 2);
+ element_type = tdesc_named_type (feature, "ieee_double");
+ tdesc_create_vector (feature, "v2d", element_type, 2);
- field_type = tdesc_named_type (feature, "int8");
- tdesc_create_vector (feature, "v16i8", field_type, 16);
+ element_type = tdesc_named_type (feature, "int8");
+ tdesc_create_vector (feature, "v16i8", element_type, 16);
- field_type = tdesc_named_type (feature, "int16");
- tdesc_create_vector (feature, "v8i16", field_type, 8);
+ element_type = tdesc_named_type (feature, "int16");
+ tdesc_create_vector (feature, "v8i16", element_type, 8);
- field_type = tdesc_named_type (feature, "int32");
- tdesc_create_vector (feature, "v4i32", field_type, 4);
+ element_type = tdesc_named_type (feature, "int32");
+ tdesc_create_vector (feature, "v4i32", element_type, 4);
- field_type = tdesc_named_type (feature, "int64");
- tdesc_create_vector (feature, "v2i64", field_type, 2);
+ element_type = tdesc_named_type (feature, "int64");
+ tdesc_create_vector (feature, "v2i64", element_type, 2);
- struct tdesc_type *type;
- type = tdesc_create_union (feature, "vec128");
+ tdesc_type_with_fields *type_with_fields;
+ tdesc_type *field_type;
+ type_with_fields = tdesc_create_union (feature, "vec128");
field_type = tdesc_named_type (feature, "v4f");
- tdesc_add_field (type, "v4_float", field_type);
+ tdesc_add_field (type_with_fields, "v4_float", field_type);
field_type = tdesc_named_type (feature, "v2d");
- tdesc_add_field (type, "v2_double", field_type);
+ tdesc_add_field (type_with_fields, "v2_double", field_type);
field_type = tdesc_named_type (feature, "v16i8");
- tdesc_add_field (type, "v16_int8", field_type);
+ tdesc_add_field (type_with_fields, "v16_int8", field_type);
field_type = tdesc_named_type (feature, "v8i16");
- tdesc_add_field (type, "v8_int16", field_type);
+ tdesc_add_field (type_with_fields, "v8_int16", field_type);
field_type = tdesc_named_type (feature, "v4i32");
- tdesc_add_field (type, "v4_int32", field_type);
+ tdesc_add_field (type_with_fields, "v4_int32", field_type);
field_type = tdesc_named_type (feature, "v2i64");
- tdesc_add_field (type, "v2_int64", field_type);
+ tdesc_add_field (type_with_fields, "v2_int64", field_type);
field_type = tdesc_named_type (feature, "uint128");
- tdesc_add_field (type, "uint128", field_type);
+ tdesc_add_field (type_with_fields, "uint128", field_type);
- field_type = tdesc_named_type (feature, "uint128");
- tdesc_create_vector (feature, "v2ui128", field_type, 2);
+ element_type = tdesc_named_type (feature, "uint128");
+ tdesc_create_vector (feature, "v2ui128", element_type, 2);
tdesc_create_reg (feature, "xmm16", regnum++, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "xmm17", regnum++, 1, NULL, 128, "vec128");
struct tdesc_feature *feature;
feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core", "64bit-core.xml");
- struct tdesc_type *field_type;
- struct tdesc_type *type;
- type = tdesc_create_flags (feature, "i386_eflags", 4);
- tdesc_add_flag (type, 0, "CF");
- tdesc_add_flag (type, 1, "");
- tdesc_add_flag (type, 2, "PF");
- tdesc_add_flag (type, 4, "AF");
- tdesc_add_flag (type, 6, "ZF");
- tdesc_add_flag (type, 7, "SF");
- tdesc_add_flag (type, 8, "TF");
- tdesc_add_flag (type, 9, "IF");
- tdesc_add_flag (type, 10, "DF");
- tdesc_add_flag (type, 11, "OF");
- tdesc_add_flag (type, 14, "NT");
- tdesc_add_flag (type, 16, "RF");
- tdesc_add_flag (type, 17, "VM");
- tdesc_add_flag (type, 18, "AC");
- tdesc_add_flag (type, 19, "VIF");
- tdesc_add_flag (type, 20, "VIP");
- tdesc_add_flag (type, 21, "ID");
+ tdesc_type_with_fields *type_with_fields;
+ tdesc_type *field_type;
+ type_with_fields = tdesc_create_flags (feature, "i386_eflags", 4);
+ tdesc_add_flag (type_with_fields, 0, "CF");
+ tdesc_add_flag (type_with_fields, 1, "");
+ tdesc_add_flag (type_with_fields, 2, "PF");
+ tdesc_add_flag (type_with_fields, 4, "AF");
+ tdesc_add_flag (type_with_fields, 6, "ZF");
+ tdesc_add_flag (type_with_fields, 7, "SF");
+ tdesc_add_flag (type_with_fields, 8, "TF");
+ tdesc_add_flag (type_with_fields, 9, "IF");
+ tdesc_add_flag (type_with_fields, 10, "DF");
+ tdesc_add_flag (type_with_fields, 11, "OF");
+ tdesc_add_flag (type_with_fields, 14, "NT");
+ tdesc_add_flag (type_with_fields, 16, "RF");
+ tdesc_add_flag (type_with_fields, 17, "VM");
+ tdesc_add_flag (type_with_fields, 18, "AC");
+ tdesc_add_flag (type_with_fields, 19, "VIF");
+ tdesc_add_flag (type_with_fields, 20, "VIP");
+ tdesc_add_flag (type_with_fields, 21, "ID");
tdesc_create_reg (feature, "rax", regnum++, 1, NULL, 64, "int64");
tdesc_create_reg (feature, "rbx", regnum++, 1, NULL, 64, "int64");
struct tdesc_feature *feature;
feature = tdesc_create_feature (result, "org.gnu.gdb.i386.mpx", "64bit-mpx.xml");
- struct tdesc_type *field_type;
- struct tdesc_type *type;
- type = tdesc_create_struct (feature, "br128");
+ tdesc_type_with_fields *type_with_fields;
+ tdesc_type *field_type;
+ type_with_fields = tdesc_create_struct (feature, "br128");
field_type = tdesc_named_type (feature, "uint64");
- tdesc_add_field (type, "lbound", field_type);
+ tdesc_add_field (type_with_fields, "lbound", field_type);
field_type = tdesc_named_type (feature, "uint64");
- tdesc_add_field (type, "ubound_raw", field_type);
+ tdesc_add_field (type_with_fields, "ubound_raw", field_type);
- type = tdesc_create_struct (feature, "_bndstatus");
- tdesc_set_struct_size (type, 8);
- tdesc_add_bitfield (type, "bde", 2, 63);
- tdesc_add_bitfield (type, "error", 0, 1);
+ type_with_fields = tdesc_create_struct (feature, "_bndstatus");
+ tdesc_set_struct_size (type_with_fields, 8);
+ tdesc_add_bitfield (type_with_fields, "bde", 2, 63);
+ tdesc_add_bitfield (type_with_fields, "error", 0, 1);
- type = tdesc_create_union (feature, "status");
+ type_with_fields = tdesc_create_union (feature, "status");
field_type = tdesc_named_type (feature, "data_ptr");
- tdesc_add_field (type, "raw", field_type);
+ tdesc_add_field (type_with_fields, "raw", field_type);
field_type = tdesc_named_type (feature, "_bndstatus");
- tdesc_add_field (type, "status", field_type);
+ tdesc_add_field (type_with_fields, "status", field_type);
- type = tdesc_create_struct (feature, "_bndcfgu");
- tdesc_set_struct_size (type, 8);
- tdesc_add_bitfield (type, "base", 12, 63);
- tdesc_add_bitfield (type, "reserved", 2, 11);
- tdesc_add_bitfield (type, "preserved", 1, 1);
- tdesc_add_bitfield (type, "enabled", 0, 0);
+ type_with_fields = tdesc_create_struct (feature, "_bndcfgu");
+ tdesc_set_struct_size (type_with_fields, 8);
+ tdesc_add_bitfield (type_with_fields, "base", 12, 63);
+ tdesc_add_bitfield (type_with_fields, "reserved", 2, 11);
+ tdesc_add_bitfield (type_with_fields, "preserved", 1, 1);
+ tdesc_add_bitfield (type_with_fields, "enabled", 0, 0);
- type = tdesc_create_union (feature, "cfgu");
+ type_with_fields = tdesc_create_union (feature, "cfgu");
field_type = tdesc_named_type (feature, "data_ptr");
- tdesc_add_field (type, "raw", field_type);
+ tdesc_add_field (type_with_fields, "raw", field_type);
field_type = tdesc_named_type (feature, "_bndcfgu");
- tdesc_add_field (type, "config", field_type);
+ tdesc_add_field (type_with_fields, "config", field_type);
tdesc_create_reg (feature, "bnd0raw", regnum++, 1, NULL, 128, "br128");
tdesc_create_reg (feature, "bnd1raw", regnum++, 1, NULL, 128, "br128");
struct tdesc_feature *feature;
feature = tdesc_create_feature (result, "org.gnu.gdb.i386.sse", "64bit-sse.xml");
- struct tdesc_type *field_type;
- field_type = tdesc_named_type (feature, "ieee_single");
- tdesc_create_vector (feature, "v4f", field_type, 4);
+ tdesc_type *element_type;
+ element_type = tdesc_named_type (feature, "ieee_single");
+ tdesc_create_vector (feature, "v4f", element_type, 4);
- field_type = tdesc_named_type (feature, "ieee_double");
- tdesc_create_vector (feature, "v2d", field_type, 2);
+ element_type = tdesc_named_type (feature, "ieee_double");
+ tdesc_create_vector (feature, "v2d", element_type, 2);
- field_type = tdesc_named_type (feature, "int8");
- tdesc_create_vector (feature, "v16i8", field_type, 16);
+ element_type = tdesc_named_type (feature, "int8");
+ tdesc_create_vector (feature, "v16i8", element_type, 16);
- field_type = tdesc_named_type (feature, "int16");
- tdesc_create_vector (feature, "v8i16", field_type, 8);
+ element_type = tdesc_named_type (feature, "int16");
+ tdesc_create_vector (feature, "v8i16", element_type, 8);
- field_type = tdesc_named_type (feature, "int32");
- tdesc_create_vector (feature, "v4i32", field_type, 4);
+ element_type = tdesc_named_type (feature, "int32");
+ tdesc_create_vector (feature, "v4i32", element_type, 4);
- field_type = tdesc_named_type (feature, "int64");
- tdesc_create_vector (feature, "v2i64", field_type, 2);
+ element_type = tdesc_named_type (feature, "int64");
+ tdesc_create_vector (feature, "v2i64", element_type, 2);
- struct tdesc_type *type;
- type = tdesc_create_union (feature, "vec128");
+ tdesc_type_with_fields *type_with_fields;
+ tdesc_type *field_type;
+ type_with_fields = tdesc_create_union (feature, "vec128");
field_type = tdesc_named_type (feature, "v4f");
- tdesc_add_field (type, "v4_float", field_type);
+ tdesc_add_field (type_with_fields, "v4_float", field_type);
field_type = tdesc_named_type (feature, "v2d");
- tdesc_add_field (type, "v2_double", field_type);
+ tdesc_add_field (type_with_fields, "v2_double", field_type);
field_type = tdesc_named_type (feature, "v16i8");
- tdesc_add_field (type, "v16_int8", field_type);
+ tdesc_add_field (type_with_fields, "v16_int8", field_type);
field_type = tdesc_named_type (feature, "v8i16");
- tdesc_add_field (type, "v8_int16", field_type);
+ tdesc_add_field (type_with_fields, "v8_int16", field_type);
field_type = tdesc_named_type (feature, "v4i32");
- tdesc_add_field (type, "v4_int32", field_type);
+ tdesc_add_field (type_with_fields, "v4_int32", field_type);
field_type = tdesc_named_type (feature, "v2i64");
- tdesc_add_field (type, "v2_int64", field_type);
+ tdesc_add_field (type_with_fields, "v2_int64", field_type);
field_type = tdesc_named_type (feature, "uint128");
- tdesc_add_field (type, "uint128", field_type);
+ tdesc_add_field (type_with_fields, "uint128", field_type);
- type = tdesc_create_flags (feature, "i386_mxcsr", 4);
- tdesc_add_flag (type, 0, "IE");
- tdesc_add_flag (type, 1, "DE");
- tdesc_add_flag (type, 2, "ZE");
- tdesc_add_flag (type, 3, "OE");
- tdesc_add_flag (type, 4, "UE");
- tdesc_add_flag (type, 5, "PE");
- tdesc_add_flag (type, 6, "DAZ");
- tdesc_add_flag (type, 7, "IM");
- tdesc_add_flag (type, 8, "DM");
- tdesc_add_flag (type, 9, "ZM");
- tdesc_add_flag (type, 10, "OM");
- tdesc_add_flag (type, 11, "UM");
- tdesc_add_flag (type, 12, "PM");
- tdesc_add_flag (type, 15, "FZ");
+ type_with_fields = tdesc_create_flags (feature, "i386_mxcsr", 4);
+ tdesc_add_flag (type_with_fields, 0, "IE");
+ tdesc_add_flag (type_with_fields, 1, "DE");
+ tdesc_add_flag (type_with_fields, 2, "ZE");
+ tdesc_add_flag (type_with_fields, 3, "OE");
+ tdesc_add_flag (type_with_fields, 4, "UE");
+ tdesc_add_flag (type_with_fields, 5, "PE");
+ tdesc_add_flag (type_with_fields, 6, "DAZ");
+ tdesc_add_flag (type_with_fields, 7, "IM");
+ tdesc_add_flag (type_with_fields, 8, "DM");
+ tdesc_add_flag (type_with_fields, 9, "ZM");
+ tdesc_add_flag (type_with_fields, 10, "OM");
+ tdesc_add_flag (type_with_fields, 11, "UM");
+ tdesc_add_flag (type_with_fields, 12, "PM");
+ tdesc_add_flag (type_with_fields, 15, "FZ");
regnum = 40;
tdesc_create_reg (feature, "xmm0", regnum++, 1, NULL, 128, "vec128");
struct tdesc_feature *feature;
feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core", "x32-core.xml");
- struct tdesc_type *field_type;
- struct tdesc_type *type;
- type = tdesc_create_flags (feature, "i386_eflags", 4);
- tdesc_add_flag (type, 0, "CF");
- tdesc_add_flag (type, 1, "");
- tdesc_add_flag (type, 2, "PF");
- tdesc_add_flag (type, 4, "AF");
- tdesc_add_flag (type, 6, "ZF");
- tdesc_add_flag (type, 7, "SF");
- tdesc_add_flag (type, 8, "TF");
- tdesc_add_flag (type, 9, "IF");
- tdesc_add_flag (type, 10, "DF");
- tdesc_add_flag (type, 11, "OF");
- tdesc_add_flag (type, 14, "NT");
- tdesc_add_flag (type, 16, "RF");
- tdesc_add_flag (type, 17, "VM");
- tdesc_add_flag (type, 18, "AC");
- tdesc_add_flag (type, 19, "VIF");
- tdesc_add_flag (type, 20, "VIP");
- tdesc_add_flag (type, 21, "ID");
+ tdesc_type_with_fields *type_with_fields;
+ tdesc_type *field_type;
+ type_with_fields = tdesc_create_flags (feature, "i386_eflags", 4);
+ tdesc_add_flag (type_with_fields, 0, "CF");
+ tdesc_add_flag (type_with_fields, 1, "");
+ tdesc_add_flag (type_with_fields, 2, "PF");
+ tdesc_add_flag (type_with_fields, 4, "AF");
+ tdesc_add_flag (type_with_fields, 6, "ZF");
+ tdesc_add_flag (type_with_fields, 7, "SF");
+ tdesc_add_flag (type_with_fields, 8, "TF");
+ tdesc_add_flag (type_with_fields, 9, "IF");
+ tdesc_add_flag (type_with_fields, 10, "DF");
+ tdesc_add_flag (type_with_fields, 11, "OF");
+ tdesc_add_flag (type_with_fields, 14, "NT");
+ tdesc_add_flag (type_with_fields, 16, "RF");
+ tdesc_add_flag (type_with_fields, 17, "VM");
+ tdesc_add_flag (type_with_fields, 18, "AC");
+ tdesc_add_flag (type_with_fields, 19, "VIF");
+ tdesc_add_flag (type_with_fields, 20, "VIP");
+ tdesc_add_flag (type_with_fields, 21, "ID");
tdesc_create_reg (feature, "rax", regnum++, 1, NULL, 64, "int64");
tdesc_create_reg (feature, "rbx", regnum++, 1, NULL, 64, "int64");
tdesc_create_reg (feature, "ear", 118, 1, NULL, 32, "int");
feature = tdesc_create_feature (result, "org.gnu.gdb.power.altivec");
- struct tdesc_type *field_type;
- field_type = tdesc_named_type (feature, "ieee_single");
- tdesc_create_vector (feature, "v4f", field_type, 4);
+ tdesc_type *element_type;
+ element_type = tdesc_named_type (feature, "ieee_single");
+ tdesc_create_vector (feature, "v4f", element_type, 4);
- field_type = tdesc_named_type (feature, "int32");
- tdesc_create_vector (feature, "v4i32", field_type, 4);
+ element_type = tdesc_named_type (feature, "int32");
+ tdesc_create_vector (feature, "v4i32", element_type, 4);
- field_type = tdesc_named_type (feature, "int16");
- tdesc_create_vector (feature, "v8i16", field_type, 8);
+ element_type = tdesc_named_type (feature, "int16");
+ tdesc_create_vector (feature, "v8i16", element_type, 8);
- field_type = tdesc_named_type (feature, "int8");
- tdesc_create_vector (feature, "v16i8", field_type, 16);
+ element_type = tdesc_named_type (feature, "int8");
+ tdesc_create_vector (feature, "v16i8", element_type, 16);
- struct tdesc_type *type;
- type = tdesc_create_union (feature, "vec128");
+ tdesc_type_with_fields *type_with_fields;
+ tdesc_type *field_type;
+ type_with_fields = tdesc_create_union (feature, "vec128");
field_type = tdesc_named_type (feature, "uint128");
- tdesc_add_field (type, "uint128", field_type);
+ tdesc_add_field (type_with_fields, "uint128", field_type);
field_type = tdesc_named_type (feature, "v4f");
- tdesc_add_field (type, "v4_float", field_type);
+ tdesc_add_field (type_with_fields, "v4_float", field_type);
field_type = tdesc_named_type (feature, "v4i32");
- tdesc_add_field (type, "v4_int32", field_type);
+ tdesc_add_field (type_with_fields, "v4_int32", field_type);
field_type = tdesc_named_type (feature, "v8i16");
- tdesc_add_field (type, "v8_int16", field_type);
+ tdesc_add_field (type_with_fields, "v8_int16", field_type);
field_type = tdesc_named_type (feature, "v16i8");
- tdesc_add_field (type, "v16_int8", field_type);
+ tdesc_add_field (type_with_fields, "v16_int8", field_type);
tdesc_create_reg (feature, "vr0", 119, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "vr1", 120, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "fpscr", 70, 1, "float", 32, "int");
feature = tdesc_create_feature (result, "org.gnu.gdb.power.altivec");
- struct tdesc_type *field_type;
- field_type = tdesc_named_type (feature, "ieee_single");
- tdesc_create_vector (feature, "v4f", field_type, 4);
+ tdesc_type *element_type;
+ element_type = tdesc_named_type (feature, "ieee_single");
+ tdesc_create_vector (feature, "v4f", element_type, 4);
- field_type = tdesc_named_type (feature, "int32");
- tdesc_create_vector (feature, "v4i32", field_type, 4);
+ element_type = tdesc_named_type (feature, "int32");
+ tdesc_create_vector (feature, "v4i32", element_type, 4);
- field_type = tdesc_named_type (feature, "int16");
- tdesc_create_vector (feature, "v8i16", field_type, 8);
+ element_type = tdesc_named_type (feature, "int16");
+ tdesc_create_vector (feature, "v8i16", element_type, 8);
- field_type = tdesc_named_type (feature, "int8");
- tdesc_create_vector (feature, "v16i8", field_type, 16);
+ element_type = tdesc_named_type (feature, "int8");
+ tdesc_create_vector (feature, "v16i8", element_type, 16);
- struct tdesc_type *type;
- type = tdesc_create_union (feature, "vec128");
+ tdesc_type_with_fields *type_with_fields;
+ tdesc_type *field_type;
+ type_with_fields = tdesc_create_union (feature, "vec128");
field_type = tdesc_named_type (feature, "uint128");
- tdesc_add_field (type, "uint128", field_type);
+ tdesc_add_field (type_with_fields, "uint128", field_type);
field_type = tdesc_named_type (feature, "v4f");
- tdesc_add_field (type, "v4_float", field_type);
+ tdesc_add_field (type_with_fields, "v4_float", field_type);
field_type = tdesc_named_type (feature, "v4i32");
- tdesc_add_field (type, "v4_int32", field_type);
+ tdesc_add_field (type_with_fields, "v4_int32", field_type);
field_type = tdesc_named_type (feature, "v8i16");
- tdesc_add_field (type, "v8_int16", field_type);
+ tdesc_add_field (type_with_fields, "v8_int16", field_type);
field_type = tdesc_named_type (feature, "v16i8");
- tdesc_add_field (type, "v16_int8", field_type);
+ tdesc_add_field (type_with_fields, "v16_int8", field_type);
tdesc_create_reg (feature, "vr0", 71, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "vr1", 72, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "trap", 72, 1, NULL, 32, "int");
feature = tdesc_create_feature (result, "org.gnu.gdb.power.altivec");
- struct tdesc_type *field_type;
- field_type = tdesc_named_type (feature, "ieee_single");
- tdesc_create_vector (feature, "v4f", field_type, 4);
+ tdesc_type *element_type;
+ element_type = tdesc_named_type (feature, "ieee_single");
+ tdesc_create_vector (feature, "v4f", element_type, 4);
- field_type = tdesc_named_type (feature, "int32");
- tdesc_create_vector (feature, "v4i32", field_type, 4);
+ element_type = tdesc_named_type (feature, "int32");
+ tdesc_create_vector (feature, "v4i32", element_type, 4);
- field_type = tdesc_named_type (feature, "int16");
- tdesc_create_vector (feature, "v8i16", field_type, 8);
+ element_type = tdesc_named_type (feature, "int16");
+ tdesc_create_vector (feature, "v8i16", element_type, 8);
- field_type = tdesc_named_type (feature, "int8");
- tdesc_create_vector (feature, "v16i8", field_type, 16);
+ element_type = tdesc_named_type (feature, "int8");
+ tdesc_create_vector (feature, "v16i8", element_type, 16);
- struct tdesc_type *type;
- type = tdesc_create_union (feature, "vec128");
+ tdesc_type_with_fields *type_with_fields;
+ tdesc_type *field_type;
+ type_with_fields = tdesc_create_union (feature, "vec128");
field_type = tdesc_named_type (feature, "uint128");
- tdesc_add_field (type, "uint128", field_type);
+ tdesc_add_field (type_with_fields, "uint128", field_type);
field_type = tdesc_named_type (feature, "v4f");
- tdesc_add_field (type, "v4_float", field_type);
+ tdesc_add_field (type_with_fields, "v4_float", field_type);
field_type = tdesc_named_type (feature, "v4i32");
- tdesc_add_field (type, "v4_int32", field_type);
+ tdesc_add_field (type_with_fields, "v4_int32", field_type);
field_type = tdesc_named_type (feature, "v8i16");
- tdesc_add_field (type, "v8_int16", field_type);
+ tdesc_add_field (type_with_fields, "v8_int16", field_type);
field_type = tdesc_named_type (feature, "v16i8");
- tdesc_add_field (type, "v16_int8", field_type);
+ tdesc_add_field (type_with_fields, "v16_int8", field_type);
tdesc_create_reg (feature, "vr0", 73, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "vr1", 74, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "fpscr", 70, 1, "float", 32, "int");
feature = tdesc_create_feature (result, "org.gnu.gdb.power.altivec");
- struct tdesc_type *field_type;
- field_type = tdesc_named_type (feature, "ieee_single");
- tdesc_create_vector (feature, "v4f", field_type, 4);
+ tdesc_type *element_type;
+ element_type = tdesc_named_type (feature, "ieee_single");
+ tdesc_create_vector (feature, "v4f", element_type, 4);
- field_type = tdesc_named_type (feature, "int32");
- tdesc_create_vector (feature, "v4i32", field_type, 4);
+ element_type = tdesc_named_type (feature, "int32");
+ tdesc_create_vector (feature, "v4i32", element_type, 4);
- field_type = tdesc_named_type (feature, "int16");
- tdesc_create_vector (feature, "v8i16", field_type, 8);
+ element_type = tdesc_named_type (feature, "int16");
+ tdesc_create_vector (feature, "v8i16", element_type, 8);
- field_type = tdesc_named_type (feature, "int8");
- tdesc_create_vector (feature, "v16i8", field_type, 16);
+ element_type = tdesc_named_type (feature, "int8");
+ tdesc_create_vector (feature, "v16i8", element_type, 16);
- struct tdesc_type *type;
- type = tdesc_create_union (feature, "vec128");
+ tdesc_type_with_fields *type_with_fields;
+ tdesc_type *field_type;
+ type_with_fields = tdesc_create_union (feature, "vec128");
field_type = tdesc_named_type (feature, "uint128");
- tdesc_add_field (type, "uint128", field_type);
+ tdesc_add_field (type_with_fields, "uint128", field_type);
field_type = tdesc_named_type (feature, "v4f");
- tdesc_add_field (type, "v4_float", field_type);
+ tdesc_add_field (type_with_fields, "v4_float", field_type);
field_type = tdesc_named_type (feature, "v4i32");
- tdesc_add_field (type, "v4_int32", field_type);
+ tdesc_add_field (type_with_fields, "v4_int32", field_type);
field_type = tdesc_named_type (feature, "v8i16");
- tdesc_add_field (type, "v8_int16", field_type);
+ tdesc_add_field (type_with_fields, "v8_int16", field_type);
field_type = tdesc_named_type (feature, "v16i8");
- tdesc_add_field (type, "v16_int8", field_type);
+ tdesc_add_field (type_with_fields, "v16_int8", field_type);
tdesc_create_reg (feature, "vr0", 71, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "vr1", 72, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "trap", 72, 1, NULL, 64, "int");
feature = tdesc_create_feature (result, "org.gnu.gdb.power.altivec");
- struct tdesc_type *field_type;
- field_type = tdesc_named_type (feature, "ieee_single");
- tdesc_create_vector (feature, "v4f", field_type, 4);
+ tdesc_type *element_type;
+ element_type = tdesc_named_type (feature, "ieee_single");
+ tdesc_create_vector (feature, "v4f", element_type, 4);
- field_type = tdesc_named_type (feature, "int32");
- tdesc_create_vector (feature, "v4i32", field_type, 4);
+ element_type = tdesc_named_type (feature, "int32");
+ tdesc_create_vector (feature, "v4i32", element_type, 4);
- field_type = tdesc_named_type (feature, "int16");
- tdesc_create_vector (feature, "v8i16", field_type, 8);
+ element_type = tdesc_named_type (feature, "int16");
+ tdesc_create_vector (feature, "v8i16", element_type, 8);
- field_type = tdesc_named_type (feature, "int8");
- tdesc_create_vector (feature, "v16i8", field_type, 16);
+ element_type = tdesc_named_type (feature, "int8");
+ tdesc_create_vector (feature, "v16i8", element_type, 16);
- struct tdesc_type *type;
- type = tdesc_create_union (feature, "vec128");
+ tdesc_type_with_fields *type_with_fields;
+ tdesc_type *field_type;
+ type_with_fields = tdesc_create_union (feature, "vec128");
field_type = tdesc_named_type (feature, "uint128");
- tdesc_add_field (type, "uint128", field_type);
+ tdesc_add_field (type_with_fields, "uint128", field_type);
field_type = tdesc_named_type (feature, "v4f");
- tdesc_add_field (type, "v4_float", field_type);
+ tdesc_add_field (type_with_fields, "v4_float", field_type);
field_type = tdesc_named_type (feature, "v4i32");
- tdesc_add_field (type, "v4_int32", field_type);
+ tdesc_add_field (type_with_fields, "v4_int32", field_type);
field_type = tdesc_named_type (feature, "v8i16");
- tdesc_add_field (type, "v8_int16", field_type);
+ tdesc_add_field (type_with_fields, "v8_int16", field_type);
field_type = tdesc_named_type (feature, "v16i8");
- tdesc_add_field (type, "v16_int8", field_type);
+ tdesc_add_field (type_with_fields, "v16_int8", field_type);
tdesc_create_reg (feature, "vr0", 73, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "vr1", 74, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "trap", 72, 1, NULL, 32, "int");
feature = tdesc_create_feature (result, "org.gnu.gdb.power.altivec");
- struct tdesc_type *field_type;
- field_type = tdesc_named_type (feature, "ieee_single");
- tdesc_create_vector (feature, "v4f", field_type, 4);
+ tdesc_type *element_type;
+ element_type = tdesc_named_type (feature, "ieee_single");
+ tdesc_create_vector (feature, "v4f", element_type, 4);
- field_type = tdesc_named_type (feature, "int32");
- tdesc_create_vector (feature, "v4i32", field_type, 4);
+ element_type = tdesc_named_type (feature, "int32");
+ tdesc_create_vector (feature, "v4i32", element_type, 4);
- field_type = tdesc_named_type (feature, "int16");
- tdesc_create_vector (feature, "v8i16", field_type, 8);
+ element_type = tdesc_named_type (feature, "int16");
+ tdesc_create_vector (feature, "v8i16", element_type, 8);
- field_type = tdesc_named_type (feature, "int8");
- tdesc_create_vector (feature, "v16i8", field_type, 16);
+ element_type = tdesc_named_type (feature, "int8");
+ tdesc_create_vector (feature, "v16i8", element_type, 16);
- struct tdesc_type *type;
- type = tdesc_create_union (feature, "vec128");
+ tdesc_type_with_fields *type_with_fields;
+ tdesc_type *field_type;
+ type_with_fields = tdesc_create_union (feature, "vec128");
field_type = tdesc_named_type (feature, "uint128");
- tdesc_add_field (type, "uint128", field_type);
+ tdesc_add_field (type_with_fields, "uint128", field_type);
field_type = tdesc_named_type (feature, "v4f");
- tdesc_add_field (type, "v4_float", field_type);
+ tdesc_add_field (type_with_fields, "v4_float", field_type);
field_type = tdesc_named_type (feature, "v4i32");
- tdesc_add_field (type, "v4_int32", field_type);
+ tdesc_add_field (type_with_fields, "v4_int32", field_type);
field_type = tdesc_named_type (feature, "v8i16");
- tdesc_add_field (type, "v8_int16", field_type);
+ tdesc_add_field (type_with_fields, "v8_int16", field_type);
field_type = tdesc_named_type (feature, "v16i8");
- tdesc_add_field (type, "v16_int8", field_type);
+ tdesc_add_field (type_with_fields, "v16_int8", field_type);
tdesc_create_reg (feature, "vr0", 73, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "vr1", 74, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "trap", 72, 1, NULL, 64, "int");
feature = tdesc_create_feature (result, "org.gnu.gdb.power.altivec");
- struct tdesc_type *field_type;
- field_type = tdesc_named_type (feature, "ieee_single");
- tdesc_create_vector (feature, "v4f", field_type, 4);
+ tdesc_type *element_type;
+ element_type = tdesc_named_type (feature, "ieee_single");
+ tdesc_create_vector (feature, "v4f", element_type, 4);
- field_type = tdesc_named_type (feature, "int32");
- tdesc_create_vector (feature, "v4i32", field_type, 4);
+ element_type = tdesc_named_type (feature, "int32");
+ tdesc_create_vector (feature, "v4i32", element_type, 4);
- field_type = tdesc_named_type (feature, "int16");
- tdesc_create_vector (feature, "v8i16", field_type, 8);
+ element_type = tdesc_named_type (feature, "int16");
+ tdesc_create_vector (feature, "v8i16", element_type, 8);
- field_type = tdesc_named_type (feature, "int8");
- tdesc_create_vector (feature, "v16i8", field_type, 16);
+ element_type = tdesc_named_type (feature, "int8");
+ tdesc_create_vector (feature, "v16i8", element_type, 16);
- struct tdesc_type *type;
- type = tdesc_create_union (feature, "vec128");
+ tdesc_type_with_fields *type_with_fields;
+ tdesc_type *field_type;
+ type_with_fields = tdesc_create_union (feature, "vec128");
field_type = tdesc_named_type (feature, "uint128");
- tdesc_add_field (type, "uint128", field_type);
+ tdesc_add_field (type_with_fields, "uint128", field_type);
field_type = tdesc_named_type (feature, "v4f");
- tdesc_add_field (type, "v4_float", field_type);
+ tdesc_add_field (type_with_fields, "v4_float", field_type);
field_type = tdesc_named_type (feature, "v4i32");
- tdesc_add_field (type, "v4_int32", field_type);
+ tdesc_add_field (type_with_fields, "v4_int32", field_type);
field_type = tdesc_named_type (feature, "v8i16");
- tdesc_add_field (type, "v8_int16", field_type);
+ tdesc_add_field (type_with_fields, "v8_int16", field_type);
field_type = tdesc_named_type (feature, "v16i8");
- tdesc_add_field (type, "v16_int8", field_type);
+ tdesc_add_field (type_with_fields, "v16_int8", field_type);
tdesc_create_reg (feature, "vr0", 73, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "vr1", 74, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "trap", 72, 1, NULL, 32, "int");
feature = tdesc_create_feature (result, "org.gnu.gdb.power.altivec");
- struct tdesc_type *field_type;
- field_type = tdesc_named_type (feature, "ieee_single");
- tdesc_create_vector (feature, "v4f", field_type, 4);
+ tdesc_type *element_type;
+ element_type = tdesc_named_type (feature, "ieee_single");
+ tdesc_create_vector (feature, "v4f", element_type, 4);
- field_type = tdesc_named_type (feature, "int32");
- tdesc_create_vector (feature, "v4i32", field_type, 4);
+ element_type = tdesc_named_type (feature, "int32");
+ tdesc_create_vector (feature, "v4i32", element_type, 4);
- field_type = tdesc_named_type (feature, "int16");
- tdesc_create_vector (feature, "v8i16", field_type, 8);
+ element_type = tdesc_named_type (feature, "int16");
+ tdesc_create_vector (feature, "v8i16", element_type, 8);
- field_type = tdesc_named_type (feature, "int8");
- tdesc_create_vector (feature, "v16i8", field_type, 16);
+ element_type = tdesc_named_type (feature, "int8");
+ tdesc_create_vector (feature, "v16i8", element_type, 16);
- struct tdesc_type *type;
- type = tdesc_create_union (feature, "vec128");
+ tdesc_type_with_fields *type_with_fields;
+ tdesc_type *field_type;
+ type_with_fields = tdesc_create_union (feature, "vec128");
field_type = tdesc_named_type (feature, "uint128");
- tdesc_add_field (type, "uint128", field_type);
+ tdesc_add_field (type_with_fields, "uint128", field_type);
field_type = tdesc_named_type (feature, "v4f");
- tdesc_add_field (type, "v4_float", field_type);
+ tdesc_add_field (type_with_fields, "v4_float", field_type);
field_type = tdesc_named_type (feature, "v4i32");
- tdesc_add_field (type, "v4_int32", field_type);
+ tdesc_add_field (type_with_fields, "v4_int32", field_type);
field_type = tdesc_named_type (feature, "v8i16");
- tdesc_add_field (type, "v8_int16", field_type);
+ tdesc_add_field (type_with_fields, "v8_int16", field_type);
field_type = tdesc_named_type (feature, "v16i8");
- tdesc_add_field (type, "v16_int8", field_type);
+ tdesc_add_field (type_with_fields, "v16_int8", field_type);
tdesc_create_reg (feature, "vr0", 73, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "vr1", 74, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "trap", 72, 1, NULL, 64, "int");
feature = tdesc_create_feature (result, "org.gnu.gdb.power.altivec");
- struct tdesc_type *field_type;
- field_type = tdesc_named_type (feature, "ieee_single");
- tdesc_create_vector (feature, "v4f", field_type, 4);
+ tdesc_type *element_type;
+ element_type = tdesc_named_type (feature, "ieee_single");
+ tdesc_create_vector (feature, "v4f", element_type, 4);
- field_type = tdesc_named_type (feature, "int32");
- tdesc_create_vector (feature, "v4i32", field_type, 4);
+ element_type = tdesc_named_type (feature, "int32");
+ tdesc_create_vector (feature, "v4i32", element_type, 4);
- field_type = tdesc_named_type (feature, "int16");
- tdesc_create_vector (feature, "v8i16", field_type, 8);
+ element_type = tdesc_named_type (feature, "int16");
+ tdesc_create_vector (feature, "v8i16", element_type, 8);
- field_type = tdesc_named_type (feature, "int8");
- tdesc_create_vector (feature, "v16i8", field_type, 16);
+ element_type = tdesc_named_type (feature, "int8");
+ tdesc_create_vector (feature, "v16i8", element_type, 16);
- struct tdesc_type *type;
- type = tdesc_create_union (feature, "vec128");
+ tdesc_type_with_fields *type_with_fields;
+ tdesc_type *field_type;
+ type_with_fields = tdesc_create_union (feature, "vec128");
field_type = tdesc_named_type (feature, "uint128");
- tdesc_add_field (type, "uint128", field_type);
+ tdesc_add_field (type_with_fields, "uint128", field_type);
field_type = tdesc_named_type (feature, "v4f");
- tdesc_add_field (type, "v4_float", field_type);
+ tdesc_add_field (type_with_fields, "v4_float", field_type);
field_type = tdesc_named_type (feature, "v4i32");
- tdesc_add_field (type, "v4_int32", field_type);
+ tdesc_add_field (type_with_fields, "v4_int32", field_type);
field_type = tdesc_named_type (feature, "v8i16");
- tdesc_add_field (type, "v8_int16", field_type);
+ tdesc_add_field (type_with_fields, "v8_int16", field_type);
field_type = tdesc_named_type (feature, "v16i8");
- tdesc_add_field (type, "v16_int8", field_type);
+ tdesc_add_field (type_with_fields, "v16_int8", field_type);
tdesc_create_reg (feature, "vr0", 73, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "vr1", 74, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "trap", 72, 1, NULL, 32, "int");
feature = tdesc_create_feature (result, "org.gnu.gdb.power.altivec");
- struct tdesc_type *field_type;
- field_type = tdesc_named_type (feature, "ieee_single");
- tdesc_create_vector (feature, "v4f", field_type, 4);
+ tdesc_type *element_type;
+ element_type = tdesc_named_type (feature, "ieee_single");
+ tdesc_create_vector (feature, "v4f", element_type, 4);
- field_type = tdesc_named_type (feature, "int32");
- tdesc_create_vector (feature, "v4i32", field_type, 4);
+ element_type = tdesc_named_type (feature, "int32");
+ tdesc_create_vector (feature, "v4i32", element_type, 4);
- field_type = tdesc_named_type (feature, "int16");
- tdesc_create_vector (feature, "v8i16", field_type, 8);
+ element_type = tdesc_named_type (feature, "int16");
+ tdesc_create_vector (feature, "v8i16", element_type, 8);
- field_type = tdesc_named_type (feature, "int8");
- tdesc_create_vector (feature, "v16i8", field_type, 16);
+ element_type = tdesc_named_type (feature, "int8");
+ tdesc_create_vector (feature, "v16i8", element_type, 16);
- struct tdesc_type *type;
- type = tdesc_create_union (feature, "vec128");
+ tdesc_type_with_fields *type_with_fields;
+ tdesc_type *field_type;
+ type_with_fields = tdesc_create_union (feature, "vec128");
field_type = tdesc_named_type (feature, "uint128");
- tdesc_add_field (type, "uint128", field_type);
+ tdesc_add_field (type_with_fields, "uint128", field_type);
field_type = tdesc_named_type (feature, "v4f");
- tdesc_add_field (type, "v4_float", field_type);
+ tdesc_add_field (type_with_fields, "v4_float", field_type);
field_type = tdesc_named_type (feature, "v4i32");
- tdesc_add_field (type, "v4_int32", field_type);
+ tdesc_add_field (type_with_fields, "v4_int32", field_type);
field_type = tdesc_named_type (feature, "v8i16");
- tdesc_add_field (type, "v8_int16", field_type);
+ tdesc_add_field (type_with_fields, "v8_int16", field_type);
field_type = tdesc_named_type (feature, "v16i8");
- tdesc_add_field (type, "v16_int8", field_type);
+ tdesc_add_field (type_with_fields, "v16_int8", field_type);
tdesc_create_reg (feature, "vr0", 73, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "vr1", 74, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "trap", 72, 1, NULL, 64, "int");
feature = tdesc_create_feature (result, "org.gnu.gdb.power.altivec");
- struct tdesc_type *field_type;
- field_type = tdesc_named_type (feature, "ieee_single");
- tdesc_create_vector (feature, "v4f", field_type, 4);
+ tdesc_type *element_type;
+ element_type = tdesc_named_type (feature, "ieee_single");
+ tdesc_create_vector (feature, "v4f", element_type, 4);
- field_type = tdesc_named_type (feature, "int32");
- tdesc_create_vector (feature, "v4i32", field_type, 4);
+ element_type = tdesc_named_type (feature, "int32");
+ tdesc_create_vector (feature, "v4i32", element_type, 4);
- field_type = tdesc_named_type (feature, "int16");
- tdesc_create_vector (feature, "v8i16", field_type, 8);
+ element_type = tdesc_named_type (feature, "int16");
+ tdesc_create_vector (feature, "v8i16", element_type, 8);
- field_type = tdesc_named_type (feature, "int8");
- tdesc_create_vector (feature, "v16i8", field_type, 16);
+ element_type = tdesc_named_type (feature, "int8");
+ tdesc_create_vector (feature, "v16i8", element_type, 16);
- struct tdesc_type *type;
- type = tdesc_create_union (feature, "vec128");
+ tdesc_type_with_fields *type_with_fields;
+ tdesc_type *field_type;
+ type_with_fields = tdesc_create_union (feature, "vec128");
field_type = tdesc_named_type (feature, "uint128");
- tdesc_add_field (type, "uint128", field_type);
+ tdesc_add_field (type_with_fields, "uint128", field_type);
field_type = tdesc_named_type (feature, "v4f");
- tdesc_add_field (type, "v4_float", field_type);
+ tdesc_add_field (type_with_fields, "v4_float", field_type);
field_type = tdesc_named_type (feature, "v4i32");
- tdesc_add_field (type, "v4_int32", field_type);
+ tdesc_add_field (type_with_fields, "v4_int32", field_type);
field_type = tdesc_named_type (feature, "v8i16");
- tdesc_add_field (type, "v8_int16", field_type);
+ tdesc_add_field (type_with_fields, "v8_int16", field_type);
field_type = tdesc_named_type (feature, "v16i8");
- tdesc_add_field (type, "v16_int8", field_type);
+ tdesc_add_field (type_with_fields, "v16_int8", field_type);
tdesc_create_reg (feature, "vr0", 73, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "vr1", 74, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "fpscr", 70, 1, "float", 32, "int");
feature = tdesc_create_feature (result, "org.gnu.gdb.power.altivec");
- struct tdesc_type *field_type;
- field_type = tdesc_named_type (feature, "ieee_single");
- tdesc_create_vector (feature, "v4f", field_type, 4);
+ tdesc_type *element_type;
+ element_type = tdesc_named_type (feature, "ieee_single");
+ tdesc_create_vector (feature, "v4f", element_type, 4);
- field_type = tdesc_named_type (feature, "int32");
- tdesc_create_vector (feature, "v4i32", field_type, 4);
+ element_type = tdesc_named_type (feature, "int32");
+ tdesc_create_vector (feature, "v4i32", element_type, 4);
- field_type = tdesc_named_type (feature, "int16");
- tdesc_create_vector (feature, "v8i16", field_type, 8);
+ element_type = tdesc_named_type (feature, "int16");
+ tdesc_create_vector (feature, "v8i16", element_type, 8);
- field_type = tdesc_named_type (feature, "int8");
- tdesc_create_vector (feature, "v16i8", field_type, 16);
+ element_type = tdesc_named_type (feature, "int8");
+ tdesc_create_vector (feature, "v16i8", element_type, 16);
- struct tdesc_type *type;
- type = tdesc_create_union (feature, "vec128");
+ tdesc_type_with_fields *type_with_fields;
+ tdesc_type *field_type;
+ type_with_fields = tdesc_create_union (feature, "vec128");
field_type = tdesc_named_type (feature, "uint128");
- tdesc_add_field (type, "uint128", field_type);
+ tdesc_add_field (type_with_fields, "uint128", field_type);
field_type = tdesc_named_type (feature, "v4f");
- tdesc_add_field (type, "v4_float", field_type);
+ tdesc_add_field (type_with_fields, "v4_float", field_type);
field_type = tdesc_named_type (feature, "v4i32");
- tdesc_add_field (type, "v4_int32", field_type);
+ tdesc_add_field (type_with_fields, "v4_int32", field_type);
field_type = tdesc_named_type (feature, "v8i16");
- tdesc_add_field (type, "v8_int16", field_type);
+ tdesc_add_field (type_with_fields, "v8_int16", field_type);
field_type = tdesc_named_type (feature, "v16i8");
- tdesc_add_field (type, "v16_int8", field_type);
+ tdesc_add_field (type_with_fields, "v16_int8", field_type);
tdesc_create_reg (feature, "vr0", 71, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "vr1", 72, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "trap", 72, 1, NULL, 32, "int");
feature = tdesc_create_feature (result, "org.gnu.gdb.power.altivec");
- struct tdesc_type *field_type;
- field_type = tdesc_named_type (feature, "ieee_single");
- tdesc_create_vector (feature, "v4f", field_type, 4);
+ tdesc_type *element_type;
+ element_type = tdesc_named_type (feature, "ieee_single");
+ tdesc_create_vector (feature, "v4f", element_type, 4);
- field_type = tdesc_named_type (feature, "int32");
- tdesc_create_vector (feature, "v4i32", field_type, 4);
+ element_type = tdesc_named_type (feature, "int32");
+ tdesc_create_vector (feature, "v4i32", element_type, 4);
- field_type = tdesc_named_type (feature, "int16");
- tdesc_create_vector (feature, "v8i16", field_type, 8);
+ element_type = tdesc_named_type (feature, "int16");
+ tdesc_create_vector (feature, "v8i16", element_type, 8);
- field_type = tdesc_named_type (feature, "int8");
- tdesc_create_vector (feature, "v16i8", field_type, 16);
+ element_type = tdesc_named_type (feature, "int8");
+ tdesc_create_vector (feature, "v16i8", element_type, 16);
- struct tdesc_type *type;
- type = tdesc_create_union (feature, "vec128");
+ tdesc_type_with_fields *type_with_fields;
+ tdesc_type *field_type;
+ type_with_fields = tdesc_create_union (feature, "vec128");
field_type = tdesc_named_type (feature, "uint128");
- tdesc_add_field (type, "uint128", field_type);
+ tdesc_add_field (type_with_fields, "uint128", field_type);
field_type = tdesc_named_type (feature, "v4f");
- tdesc_add_field (type, "v4_float", field_type);
+ tdesc_add_field (type_with_fields, "v4_float", field_type);
field_type = tdesc_named_type (feature, "v4i32");
- tdesc_add_field (type, "v4_int32", field_type);
+ tdesc_add_field (type_with_fields, "v4_int32", field_type);
field_type = tdesc_named_type (feature, "v8i16");
- tdesc_add_field (type, "v8_int16", field_type);
+ tdesc_add_field (type_with_fields, "v8_int16", field_type);
field_type = tdesc_named_type (feature, "v16i8");
- tdesc_add_field (type, "v16_int8", field_type);
+ tdesc_add_field (type_with_fields, "v16_int8", field_type);
tdesc_create_reg (feature, "vr0", 73, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "vr1", 74, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "fpscr", 70, 1, "float", 32, "int");
feature = tdesc_create_feature (result, "org.gnu.gdb.power.altivec");
- struct tdesc_type *field_type;
- field_type = tdesc_named_type (feature, "ieee_single");
- tdesc_create_vector (feature, "v4f", field_type, 4);
+ tdesc_type *element_type;
+ element_type = tdesc_named_type (feature, "ieee_single");
+ tdesc_create_vector (feature, "v4f", element_type, 4);
- field_type = tdesc_named_type (feature, "int32");
- tdesc_create_vector (feature, "v4i32", field_type, 4);
+ element_type = tdesc_named_type (feature, "int32");
+ tdesc_create_vector (feature, "v4i32", element_type, 4);
- field_type = tdesc_named_type (feature, "int16");
- tdesc_create_vector (feature, "v8i16", field_type, 8);
+ element_type = tdesc_named_type (feature, "int16");
+ tdesc_create_vector (feature, "v8i16", element_type, 8);
- field_type = tdesc_named_type (feature, "int8");
- tdesc_create_vector (feature, "v16i8", field_type, 16);
+ element_type = tdesc_named_type (feature, "int8");
+ tdesc_create_vector (feature, "v16i8", element_type, 16);
- struct tdesc_type *type;
- type = tdesc_create_union (feature, "vec128");
+ tdesc_type_with_fields *type_with_fields;
+ tdesc_type *field_type;
+ type_with_fields = tdesc_create_union (feature, "vec128");
field_type = tdesc_named_type (feature, "uint128");
- tdesc_add_field (type, "uint128", field_type);
+ tdesc_add_field (type_with_fields, "uint128", field_type);
field_type = tdesc_named_type (feature, "v4f");
- tdesc_add_field (type, "v4_float", field_type);
+ tdesc_add_field (type_with_fields, "v4_float", field_type);
field_type = tdesc_named_type (feature, "v4i32");
- tdesc_add_field (type, "v4_int32", field_type);
+ tdesc_add_field (type_with_fields, "v4_int32", field_type);
field_type = tdesc_named_type (feature, "v8i16");
- tdesc_add_field (type, "v8_int16", field_type);
+ tdesc_add_field (type_with_fields, "v8_int16", field_type);
field_type = tdesc_named_type (feature, "v16i8");
- tdesc_add_field (type, "v16_int8", field_type);
+ tdesc_add_field (type_with_fields, "v16_int8", field_type);
tdesc_create_reg (feature, "vr0", 71, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "vr1", 72, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "trap", 72, 1, NULL, 64, "int");
feature = tdesc_create_feature (result, "org.gnu.gdb.power.altivec");
- struct tdesc_type *field_type;
- field_type = tdesc_named_type (feature, "ieee_single");
- tdesc_create_vector (feature, "v4f", field_type, 4);
+ tdesc_type *element_type;
+ element_type = tdesc_named_type (feature, "ieee_single");
+ tdesc_create_vector (feature, "v4f", element_type, 4);
- field_type = tdesc_named_type (feature, "int32");
- tdesc_create_vector (feature, "v4i32", field_type, 4);
+ element_type = tdesc_named_type (feature, "int32");
+ tdesc_create_vector (feature, "v4i32", element_type, 4);
- field_type = tdesc_named_type (feature, "int16");
- tdesc_create_vector (feature, "v8i16", field_type, 8);
+ element_type = tdesc_named_type (feature, "int16");
+ tdesc_create_vector (feature, "v8i16", element_type, 8);
- field_type = tdesc_named_type (feature, "int8");
- tdesc_create_vector (feature, "v16i8", field_type, 16);
+ element_type = tdesc_named_type (feature, "int8");
+ tdesc_create_vector (feature, "v16i8", element_type, 16);
- struct tdesc_type *type;
- type = tdesc_create_union (feature, "vec128");
+ tdesc_type_with_fields *type_with_fields;
+ tdesc_type *field_type;
+ type_with_fields = tdesc_create_union (feature, "vec128");
field_type = tdesc_named_type (feature, "uint128");
- tdesc_add_field (type, "uint128", field_type);
+ tdesc_add_field (type_with_fields, "uint128", field_type);
field_type = tdesc_named_type (feature, "v4f");
- tdesc_add_field (type, "v4_float", field_type);
+ tdesc_add_field (type_with_fields, "v4_float", field_type);
field_type = tdesc_named_type (feature, "v4i32");
- tdesc_add_field (type, "v4_int32", field_type);
+ tdesc_add_field (type_with_fields, "v4_int32", field_type);
field_type = tdesc_named_type (feature, "v8i16");
- tdesc_add_field (type, "v8_int16", field_type);
+ tdesc_add_field (type_with_fields, "v8_int16", field_type);
field_type = tdesc_named_type (feature, "v16i8");
- tdesc_add_field (type, "v16_int8", field_type);
+ tdesc_add_field (type_with_fields, "v16_int8", field_type);
tdesc_create_reg (feature, "vr0", 73, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "vr1", 74, 1, NULL, 128, "vec128");
tdesc_create_reg (feature, "tr15", 89, 1, "tdb", 64, "uint64");
feature = tdesc_create_feature (result, "org.gnu.gdb.s390.vx");
- struct tdesc_type *field_type;
- field_type = tdesc_named_type (feature, "ieee_single");
- tdesc_create_vector (feature, "v4f", field_type, 4);
+ tdesc_type *element_type;
+ element_type = tdesc_named_type (feature, "ieee_single");
+ tdesc_create_vector (feature, "v4f", element_type, 4);
- field_type = tdesc_named_type (feature, "ieee_double");
- tdesc_create_vector (feature, "v2d", field_type, 2);
+ element_type = tdesc_named_type (feature, "ieee_double");
+ tdesc_create_vector (feature, "v2d", element_type, 2);
- field_type = tdesc_named_type (feature, "int8");
- tdesc_create_vector (feature, "v16i8", field_type, 16);
+ element_type = tdesc_named_type (feature, "int8");
+ tdesc_create_vector (feature, "v16i8", element_type, 16);
- field_type = tdesc_named_type (feature, "int16");
- tdesc_create_vector (feature, "v8i16", field_type, 8);
+ element_type = tdesc_named_type (feature, "int16");
+ tdesc_create_vector (feature, "v8i16", element_type, 8);
- field_type = tdesc_named_type (feature, "int32");
- tdesc_create_vector (feature, "v4i32", field_type, 4);
+ element_type = tdesc_named_type (feature, "int32");
+ tdesc_create_vector (feature, "v4i32", element_type, 4);
- field_type = tdesc_named_type (feature, "int64");
- tdesc_create_vector (feature, "v2i64", field_type, 2);
+ element_type = tdesc_named_type (feature, "int64");
+ tdesc_create_vector (feature, "v2i64", element_type, 2);
- struct tdesc_type *type;
- type = tdesc_create_union (feature, "vec128");
+ tdesc_type_with_fields *type_with_fields;
+ tdesc_type *field_type;
+ type_with_fields = tdesc_create_union (feature, "vec128");
field_type = tdesc_named_type (feature, "v4f");
- tdesc_add_field (type, "v4_float", field_type);
+ tdesc_add_field (type_with_fields, "v4_float", field_type);
field_type = tdesc_named_type (feature, "v2d");
- tdesc_add_field (type, "v2_double", field_type);
+ tdesc_add_field (type_with_fields, "v2_double", field_type);
field_type = tdesc_named_type (feature, "v16i8");
- tdesc_add_field (type, "v16_int8", field_type);
+ tdesc_add_field (type_with_fields, "v16_int8", field_type);
field_type = tdesc_named_type (feature, "v8i16");
- tdesc_add_field (type, "v8_int16", field_type);
+ tdesc_add_field (type_with_fields, "v8_int16", field_type);
field_type = tdesc_named_type (feature, "v4i32");
- tdesc_add_field (type, "v4_int32", field_type);
+ tdesc_add_field (type_with_fields, "v4_int32", field_type);
field_type = tdesc_named_type (feature, "v2i64");
- tdesc_add_field (type, "v2_int64", field_type);
+ tdesc_add_field (type_with_fields, "v2_int64", field_type);
field_type = tdesc_named_type (feature, "uint128");
- tdesc_add_field (type, "uint128", field_type);
+ tdesc_add_field (type_with_fields, "uint128", field_type);
tdesc_create_reg (feature, "v0l", 90, 1, NULL, 64, "uint64");
tdesc_create_reg (feature, "v1l", 91, 1, NULL, 64, "uint64");
tdesc_create_reg (feature, "tr15", 89, 1, "tdb", 64, "uint64");
feature = tdesc_create_feature (result, "org.gnu.gdb.s390.vx");
- struct tdesc_type *field_type;
- field_type = tdesc_named_type (feature, "ieee_single");
- tdesc_create_vector (feature, "v4f", field_type, 4);
+ tdesc_type *element_type;
+ element_type = tdesc_named_type (feature, "ieee_single");
+ tdesc_create_vector (feature, "v4f", element_type, 4);
- field_type = tdesc_named_type (feature, "ieee_double");
- tdesc_create_vector (feature, "v2d", field_type, 2);
+ element_type = tdesc_named_type (feature, "ieee_double");
+ tdesc_create_vector (feature, "v2d", element_type, 2);
- field_type = tdesc_named_type (feature, "int8");
- tdesc_create_vector (feature, "v16i8", field_type, 16);
+ element_type = tdesc_named_type (feature, "int8");
+ tdesc_create_vector (feature, "v16i8", element_type, 16);
- field_type = tdesc_named_type (feature, "int16");
- tdesc_create_vector (feature, "v8i16", field_type, 8);
+ element_type = tdesc_named_type (feature, "int16");
+ tdesc_create_vector (feature, "v8i16", element_type, 8);
- field_type = tdesc_named_type (feature, "int32");
- tdesc_create_vector (feature, "v4i32", field_type, 4);
+ element_type = tdesc_named_type (feature, "int32");
+ tdesc_create_vector (feature, "v4i32", element_type, 4);
- field_type = tdesc_named_type (feature, "int64");
- tdesc_create_vector (feature, "v2i64", field_type, 2);
+ element_type = tdesc_named_type (feature, "int64");
+ tdesc_create_vector (feature, "v2i64", element_type, 2);
- struct tdesc_type *type;
- type = tdesc_create_union (feature, "vec128");
+ tdesc_type_with_fields *type_with_fields;
+ tdesc_type *field_type;
+ type_with_fields = tdesc_create_union (feature, "vec128");
field_type = tdesc_named_type (feature, "v4f");
- tdesc_add_field (type, "v4_float", field_type);
+ tdesc_add_field (type_with_fields, "v4_float", field_type);
field_type = tdesc_named_type (feature, "v2d");
- tdesc_add_field (type, "v2_double", field_type);
+ tdesc_add_field (type_with_fields, "v2_double", field_type);
field_type = tdesc_named_type (feature, "v16i8");
- tdesc_add_field (type, "v16_int8", field_type);
+ tdesc_add_field (type_with_fields, "v16_int8", field_type);
field_type = tdesc_named_type (feature, "v8i16");
- tdesc_add_field (type, "v8_int16", field_type);
+ tdesc_add_field (type_with_fields, "v8_int16", field_type);
field_type = tdesc_named_type (feature, "v4i32");
- tdesc_add_field (type, "v4_int32", field_type);
+ tdesc_add_field (type_with_fields, "v4_int32", field_type);
field_type = tdesc_named_type (feature, "v2i64");
- tdesc_add_field (type, "v2_int64", field_type);
+ tdesc_add_field (type_with_fields, "v2_int64", field_type);
field_type = tdesc_named_type (feature, "uint128");
- tdesc_add_field (type, "uint128", field_type);
+ tdesc_add_field (type_with_fields, "uint128", field_type);
tdesc_create_reg (feature, "v0l", 90, 1, NULL, 64, "uint64");
tdesc_create_reg (feature, "v1l", 91, 1, NULL, 64, "uint64");
tdesc_create_reg (feature, "system_call", 69, 1, "system", 32, "uint32");
feature = tdesc_create_feature (result, "org.gnu.gdb.s390.vx");
- struct tdesc_type *field_type;
- field_type = tdesc_named_type (feature, "ieee_single");
- tdesc_create_vector (feature, "v4f", field_type, 4);
+ tdesc_type *element_type;
+ element_type = tdesc_named_type (feature, "ieee_single");
+ tdesc_create_vector (feature, "v4f", element_type, 4);
- field_type = tdesc_named_type (feature, "ieee_double");
- tdesc_create_vector (feature, "v2d", field_type, 2);
+ element_type = tdesc_named_type (feature, "ieee_double");
+ tdesc_create_vector (feature, "v2d", element_type, 2);
- field_type = tdesc_named_type (feature, "int8");
- tdesc_create_vector (feature, "v16i8", field_type, 16);
+ element_type = tdesc_named_type (feature, "int8");
+ tdesc_create_vector (feature, "v16i8", element_type, 16);
- field_type = tdesc_named_type (feature, "int16");
- tdesc_create_vector (feature, "v8i16", field_type, 8);
+ element_type = tdesc_named_type (feature, "int16");
+ tdesc_create_vector (feature, "v8i16", element_type, 8);
- field_type = tdesc_named_type (feature, "int32");
- tdesc_create_vector (feature, "v4i32", field_type, 4);
+ element_type = tdesc_named_type (feature, "int32");
+ tdesc_create_vector (feature, "v4i32", element_type, 4);
- field_type = tdesc_named_type (feature, "int64");
- tdesc_create_vector (feature, "v2i64", field_type, 2);
+ element_type = tdesc_named_type (feature, "int64");
+ tdesc_create_vector (feature, "v2i64", element_type, 2);
- struct tdesc_type *type;
- type = tdesc_create_union (feature, "vec128");
+ tdesc_type_with_fields *type_with_fields;
+ tdesc_type *field_type;
+ type_with_fields = tdesc_create_union (feature, "vec128");
field_type = tdesc_named_type (feature, "v4f");
- tdesc_add_field (type, "v4_float", field_type);
+ tdesc_add_field (type_with_fields, "v4_float", field_type);
field_type = tdesc_named_type (feature, "v2d");
- tdesc_add_field (type, "v2_double", field_type);
+ tdesc_add_field (type_with_fields, "v2_double", field_type);
field_type = tdesc_named_type (feature, "v16i8");
- tdesc_add_field (type, "v16_int8", field_type);
+ tdesc_add_field (type_with_fields, "v16_int8", field_type);
field_type = tdesc_named_type (feature, "v8i16");
- tdesc_add_field (type, "v8_int16", field_type);
+ tdesc_add_field (type_with_fields, "v8_int16", field_type);
field_type = tdesc_named_type (feature, "v4i32");
- tdesc_add_field (type, "v4_int32", field_type);
+ tdesc_add_field (type_with_fields, "v4_int32", field_type);
field_type = tdesc_named_type (feature, "v2i64");
- tdesc_add_field (type, "v2_int64", field_type);
+ tdesc_add_field (type_with_fields, "v2_int64", field_type);
field_type = tdesc_named_type (feature, "uint128");
- tdesc_add_field (type, "uint128", field_type);
+ tdesc_add_field (type_with_fields, "uint128", field_type);
tdesc_create_reg (feature, "v0l", 70, 1, NULL, 64, "uint64");
tdesc_create_reg (feature, "v1l", 71, 1, NULL, 64, "uint64");
tdesc_create_reg (feature, "tr15", 73, 1, "tdb", 64, "uint64");
feature = tdesc_create_feature (result, "org.gnu.gdb.s390.vx");
- struct tdesc_type *field_type;
- field_type = tdesc_named_type (feature, "ieee_single");
- tdesc_create_vector (feature, "v4f", field_type, 4);
+ tdesc_type *element_type;
+ element_type = tdesc_named_type (feature, "ieee_single");
+ tdesc_create_vector (feature, "v4f", element_type, 4);
- field_type = tdesc_named_type (feature, "ieee_double");
- tdesc_create_vector (feature, "v2d", field_type, 2);
+ element_type = tdesc_named_type (feature, "ieee_double");
+ tdesc_create_vector (feature, "v2d", element_type, 2);
- field_type = tdesc_named_type (feature, "int8");
- tdesc_create_vector (feature, "v16i8", field_type, 16);
+ element_type = tdesc_named_type (feature, "int8");
+ tdesc_create_vector (feature, "v16i8", element_type, 16);
- field_type = tdesc_named_type (feature, "int16");
- tdesc_create_vector (feature, "v8i16", field_type, 8);
+ element_type = tdesc_named_type (feature, "int16");
+ tdesc_create_vector (feature, "v8i16", element_type, 8);
- field_type = tdesc_named_type (feature, "int32");
- tdesc_create_vector (feature, "v4i32", field_type, 4);
+ element_type = tdesc_named_type (feature, "int32");
+ tdesc_create_vector (feature, "v4i32", element_type, 4);
- field_type = tdesc_named_type (feature, "int64");
- tdesc_create_vector (feature, "v2i64", field_type, 2);
+ element_type = tdesc_named_type (feature, "int64");
+ tdesc_create_vector (feature, "v2i64", element_type, 2);
- struct tdesc_type *type;
- type = tdesc_create_union (feature, "vec128");
+ tdesc_type_with_fields *type_with_fields;
+ tdesc_type *field_type;
+ type_with_fields = tdesc_create_union (feature, "vec128");
field_type = tdesc_named_type (feature, "v4f");
- tdesc_add_field (type, "v4_float", field_type);
+ tdesc_add_field (type_with_fields, "v4_float", field_type);
field_type = tdesc_named_type (feature, "v2d");
- tdesc_add_field (type, "v2_double", field_type);
+ tdesc_add_field (type_with_fields, "v2_double", field_type);
field_type = tdesc_named_type (feature, "v16i8");
- tdesc_add_field (type, "v16_int8", field_type);
+ tdesc_add_field (type_with_fields, "v16_int8", field_type);
field_type = tdesc_named_type (feature, "v8i16");
- tdesc_add_field (type, "v8_int16", field_type);
+ tdesc_add_field (type_with_fields, "v8_int16", field_type);
field_type = tdesc_named_type (feature, "v4i32");
- tdesc_add_field (type, "v4_int32", field_type);
+ tdesc_add_field (type_with_fields, "v4_int32", field_type);
field_type = tdesc_named_type (feature, "v2i64");
- tdesc_add_field (type, "v2_int64", field_type);
+ tdesc_add_field (type_with_fields, "v2_int64", field_type);
field_type = tdesc_named_type (feature, "uint128");
- tdesc_add_field (type, "uint128", field_type);
+ tdesc_add_field (type_with_fields, "uint128", field_type);
tdesc_create_reg (feature, "v0l", 74, 1, NULL, 64, "uint64");
tdesc_create_reg (feature, "v1l", 75, 1, NULL, 64, "uint64");
tdesc_create_reg (feature, "tr15", 73, 1, "tdb", 64, "uint64");
feature = tdesc_create_feature (result, "org.gnu.gdb.s390.vx");
- struct tdesc_type *field_type;
- field_type = tdesc_named_type (feature, "ieee_single");
- tdesc_create_vector (feature, "v4f", field_type, 4);
+ tdesc_type *element_type;
+ element_type = tdesc_named_type (feature, "ieee_single");
+ tdesc_create_vector (feature, "v4f", element_type, 4);
- field_type = tdesc_named_type (feature, "ieee_double");
- tdesc_create_vector (feature, "v2d", field_type, 2);
+ element_type = tdesc_named_type (feature, "ieee_double");
+ tdesc_create_vector (feature, "v2d", element_type, 2);
- field_type = tdesc_named_type (feature, "int8");
- tdesc_create_vector (feature, "v16i8", field_type, 16);
+ element_type = tdesc_named_type (feature, "int8");
+ tdesc_create_vector (feature, "v16i8", element_type, 16);
- field_type = tdesc_named_type (feature, "int16");
- tdesc_create_vector (feature, "v8i16", field_type, 8);
+ element_type = tdesc_named_type (feature, "int16");
+ tdesc_create_vector (feature, "v8i16", element_type, 8);
- field_type = tdesc_named_type (feature, "int32");
- tdesc_create_vector (feature, "v4i32", field_type, 4);
+ element_type = tdesc_named_type (feature, "int32");
+ tdesc_create_vector (feature, "v4i32", element_type, 4);
- field_type = tdesc_named_type (feature, "int64");
- tdesc_create_vector (feature, "v2i64", field_type, 2);
+ element_type = tdesc_named_type (feature, "int64");
+ tdesc_create_vector (feature, "v2i64", element_type, 2);
- struct tdesc_type *type;
- type = tdesc_create_union (feature, "vec128");
+ tdesc_type_with_fields *type_with_fields;
+ tdesc_type *field_type;
+ type_with_fields = tdesc_create_union (feature, "vec128");
field_type = tdesc_named_type (feature, "v4f");
- tdesc_add_field (type, "v4_float", field_type);
+ tdesc_add_field (type_with_fields, "v4_float", field_type);
field_type = tdesc_named_type (feature, "v2d");
- tdesc_add_field (type, "v2_double", field_type);
+ tdesc_add_field (type_with_fields, "v2_double", field_type);
field_type = tdesc_named_type (feature, "v16i8");
- tdesc_add_field (type, "v16_int8", field_type);
+ tdesc_add_field (type_with_fields, "v16_int8", field_type);
field_type = tdesc_named_type (feature, "v8i16");
- tdesc_add_field (type, "v8_int16", field_type);
+ tdesc_add_field (type_with_fields, "v8_int16", field_type);
field_type = tdesc_named_type (feature, "v4i32");
- tdesc_add_field (type, "v4_int32", field_type);
+ tdesc_add_field (type_with_fields, "v4_int32", field_type);
field_type = tdesc_named_type (feature, "v2i64");
- tdesc_add_field (type, "v2_int64", field_type);
+ tdesc_add_field (type_with_fields, "v2_int64", field_type);
field_type = tdesc_named_type (feature, "uint128");
- tdesc_add_field (type, "uint128", field_type);
+ tdesc_add_field (type_with_fields, "uint128", field_type);
tdesc_create_reg (feature, "v0l", 74, 1, NULL, 64, "uint64");
tdesc_create_reg (feature, "v1l", 75, 1, NULL, 64, "uint64");
tdesc_create_reg (feature, "system_call", 53, 1, "system", 32, "uint32");
feature = tdesc_create_feature (result, "org.gnu.gdb.s390.vx");
- struct tdesc_type *field_type;
- field_type = tdesc_named_type (feature, "ieee_single");
- tdesc_create_vector (feature, "v4f", field_type, 4);
+ tdesc_type *element_type;
+ element_type = tdesc_named_type (feature, "ieee_single");
+ tdesc_create_vector (feature, "v4f", element_type, 4);
- field_type = tdesc_named_type (feature, "ieee_double");
- tdesc_create_vector (feature, "v2d", field_type, 2);
+ element_type = tdesc_named_type (feature, "ieee_double");
+ tdesc_create_vector (feature, "v2d", element_type, 2);
- field_type = tdesc_named_type (feature, "int8");
- tdesc_create_vector (feature, "v16i8", field_type, 16);
+ element_type = tdesc_named_type (feature, "int8");
+ tdesc_create_vector (feature, "v16i8", element_type, 16);
- field_type = tdesc_named_type (feature, "int16");
- tdesc_create_vector (feature, "v8i16", field_type, 8);
+ element_type = tdesc_named_type (feature, "int16");
+ tdesc_create_vector (feature, "v8i16", element_type, 8);
- field_type = tdesc_named_type (feature, "int32");
- tdesc_create_vector (feature, "v4i32", field_type, 4);
+ element_type = tdesc_named_type (feature, "int32");
+ tdesc_create_vector (feature, "v4i32", element_type, 4);
- field_type = tdesc_named_type (feature, "int64");
- tdesc_create_vector (feature, "v2i64", field_type, 2);
+ element_type = tdesc_named_type (feature, "int64");
+ tdesc_create_vector (feature, "v2i64", element_type, 2);
- struct tdesc_type *type;
- type = tdesc_create_union (feature, "vec128");
+ tdesc_type_with_fields *type_with_fields;
+ tdesc_type *field_type;
+ type_with_fields = tdesc_create_union (feature, "vec128");
field_type = tdesc_named_type (feature, "v4f");
- tdesc_add_field (type, "v4_float", field_type);
+ tdesc_add_field (type_with_fields, "v4_float", field_type);
field_type = tdesc_named_type (feature, "v2d");
- tdesc_add_field (type, "v2_double", field_type);
+ tdesc_add_field (type_with_fields, "v2_double", field_type);
field_type = tdesc_named_type (feature, "v16i8");
- tdesc_add_field (type, "v16_int8", field_type);
+ tdesc_add_field (type_with_fields, "v16_int8", field_type);
field_type = tdesc_named_type (feature, "v8i16");
- tdesc_add_field (type, "v8_int16", field_type);
+ tdesc_add_field (type_with_fields, "v8_int16", field_type);
field_type = tdesc_named_type (feature, "v4i32");
- tdesc_add_field (type, "v4_int32", field_type);
+ tdesc_add_field (type_with_fields, "v4_int32", field_type);
field_type = tdesc_named_type (feature, "v2i64");
- tdesc_add_field (type, "v2_int64", field_type);
+ tdesc_add_field (type_with_fields, "v2_int64", field_type);
field_type = tdesc_named_type (feature, "uint128");
- tdesc_add_field (type, "uint128", field_type);
+ tdesc_add_field (type_with_fields, "uint128", field_type);
tdesc_create_reg (feature, "v0l", 54, 1, NULL, 64, "uint64");
tdesc_create_reg (feature, "v1l", 55, 1, NULL, 64, "uint64");
+2017-12-05 Simon Marchi <simon.marchi@polymtl.ca>
+
+ * tdesc.c (struct tdesc_type): Change return type.
+ (tdesc_add_flag): Change parameter type.
+ (tdesc_add_bitfield): Likewise.
+ (tdesc_add_field): Likewise.
+ (tdesc_set_struct_size): Likewise.
+
2017-12-05 Simon Marchi <simon.marchi@ericsson.com>
* regcache.c (registers_to_string): Remove unused variable.
/* See arch/tdesc.h. */
-struct tdesc_type *
+tdesc_type_with_fields *
tdesc_create_flags (struct tdesc_feature *feature, const char *name,
int size)
{
/* See arch/tdesc.h. */
void
-tdesc_add_flag (struct tdesc_type *type, int start,
+tdesc_add_flag (tdesc_type_with_fields *type, int start,
const char *flag_name)
{}
/* See arch/tdesc.h. */
-struct tdesc_type *
+tdesc_type_with_fields *
tdesc_create_union (struct tdesc_feature *feature, const char *id)
{
return NULL;
/* See arch/tdesc.h. */
-struct tdesc_type *
+tdesc_type_with_fields *
tdesc_create_struct (struct tdesc_feature *feature, const char *id)
{
return NULL;
}
void
-tdesc_add_bitfield (struct tdesc_type *type, const char *field_name,
+tdesc_add_bitfield (tdesc_type_with_fields *type, const char *field_name,
int start, int end)
{}
/* See arch/tdesc.h. */
void
-tdesc_add_field (struct tdesc_type *type, const char *field_name,
+tdesc_add_field (tdesc_type_with_fields *type, const char *field_name,
struct tdesc_type *field_type)
{}
/* See arch/tdesc.h. */
void
-tdesc_set_struct_size (struct tdesc_type *type, int size)
+tdesc_set_struct_size (tdesc_type_with_fields *type, int size)
{
}
virtual void visit_pre (const tdesc_feature *e) = 0;
virtual void visit_post (const tdesc_feature *e) = 0;
- virtual void visit (const tdesc_type *e) = 0;
+ virtual void visit (const tdesc_type_builtin *e) = 0;
+ virtual void visit (const tdesc_type_vector *e) = 0;
+ virtual void visit (const tdesc_type_with_fields *e) = 0;
+
virtual void visit (const tdesc_reg *e) = 0;
};
{
tdesc_type (const std::string &name_, enum tdesc_type_kind kind_)
: name (name_), kind (kind_)
+ {}
+
+ virtual ~tdesc_type () = default;
+
+ DISABLE_COPY_AND_ASSIGN (tdesc_type);
+
+ /* The name of this type. */
+ std::string name;
+
+ /* Identify the kind of this type. */
+ enum tdesc_type_kind kind;
+
+ bool operator== (const tdesc_type &other) const
{
- memset (&u, 0, sizeof (u));
+ return name == other.name && kind == other.kind;
+ }
- switch (kind)
- {
- case TDESC_TYPE_STRUCT:
- case TDESC_TYPE_UNION:
- case TDESC_TYPE_FLAGS:
- case TDESC_TYPE_ENUM:
- u.u.fields = new std::vector<tdesc_type_field> ();
- break;
+ bool operator!= (const tdesc_type &other) const
+ {
+ return !(*this == other);
+ }
- default:
- break;
- }
+ /* Construct, if necessary, and return the GDB type implementing this
+ target type for architecture GDBARCH. */
+
+ virtual type *make_gdb_type (struct gdbarch *gdbarch) const = 0;
+};
+
+typedef std::unique_ptr<tdesc_type> tdesc_type_up;
+
+struct tdesc_type_builtin : tdesc_type
+{
+ tdesc_type_builtin (const std::string &name, enum tdesc_type_kind kind)
+ : tdesc_type (name, kind)
+ {}
+
+ void accept (tdesc_element_visitor &v) const override
+ {
+ v.visit (this);
}
- virtual ~tdesc_type ()
+ type *make_gdb_type (struct gdbarch *gdbarch) const override
{
- switch (kind)
+ switch (this->kind)
{
- case TDESC_TYPE_STRUCT:
- case TDESC_TYPE_UNION:
- case TDESC_TYPE_FLAGS:
- case TDESC_TYPE_ENUM:
- delete u.u.fields;
- break;
+ /* Predefined types. */
+ case TDESC_TYPE_BOOL:
+ return builtin_type (gdbarch)->builtin_bool;
- default:
- break;
+ case TDESC_TYPE_INT8:
+ return builtin_type (gdbarch)->builtin_int8;
+
+ case TDESC_TYPE_INT16:
+ return builtin_type (gdbarch)->builtin_int16;
+
+ case TDESC_TYPE_INT32:
+ return builtin_type (gdbarch)->builtin_int32;
+
+ case TDESC_TYPE_INT64:
+ return builtin_type (gdbarch)->builtin_int64;
+
+ case TDESC_TYPE_INT128:
+ return builtin_type (gdbarch)->builtin_int128;
+
+ case TDESC_TYPE_UINT8:
+ return builtin_type (gdbarch)->builtin_uint8;
+
+ case TDESC_TYPE_UINT16:
+ return builtin_type (gdbarch)->builtin_uint16;
+
+ case TDESC_TYPE_UINT32:
+ return builtin_type (gdbarch)->builtin_uint32;
+
+ case TDESC_TYPE_UINT64:
+ return builtin_type (gdbarch)->builtin_uint64;
+
+ case TDESC_TYPE_UINT128:
+ return builtin_type (gdbarch)->builtin_uint128;
+
+ case TDESC_TYPE_CODE_PTR:
+ return builtin_type (gdbarch)->builtin_func_ptr;
+
+ case TDESC_TYPE_DATA_PTR:
+ return builtin_type (gdbarch)->builtin_data_ptr;
+ }
+
+ type *gdb_type = tdesc_find_type (gdbarch, this->name.c_str ());
+ if (gdb_type != NULL)
+ return gdb_type;
+
+ switch (this->kind)
+ {
+ case TDESC_TYPE_IEEE_SINGLE:
+ return arch_float_type (gdbarch, -1, "builtin_type_ieee_single",
+ floatformats_ieee_single);
+
+ case TDESC_TYPE_IEEE_DOUBLE:
+ return arch_float_type (gdbarch, -1, "builtin_type_ieee_double",
+ floatformats_ieee_double);
+
+ case TDESC_TYPE_ARM_FPA_EXT:
+ return arch_float_type (gdbarch, -1, "builtin_type_arm_ext",
+ floatformats_arm_ext);
+
+ case TDESC_TYPE_I387_EXT:
+ return arch_float_type (gdbarch, -1, "builtin_type_i387_ext",
+ floatformats_i387_ext);
}
+
+ internal_error (__FILE__, __LINE__,
+ "Type \"%s\" has an unknown kind %d",
+ this->name.c_str (), this->kind);
+
+ return NULL;
}
+};
- DISABLE_COPY_AND_ASSIGN (tdesc_type);
+/* tdesc_type for vector types. */
- /* The name of this type. */
- std::string name;
+struct tdesc_type_vector : tdesc_type
+{
+ tdesc_type_vector (const std::string &name, tdesc_type *element_type_, int count_)
+ : tdesc_type (name, TDESC_TYPE_VECTOR),
+ element_type (element_type_), count (count_)
+ {}
- /* Identify the kind of this type. */
- enum tdesc_type_kind kind;
+ void accept (tdesc_element_visitor &v) const override
+ {
+ v.visit (this);
+ }
- /* Kind-specific data. */
- union
+ type *make_gdb_type (struct gdbarch *gdbarch) const override
{
- /* Vector type. */
- struct
- {
- struct tdesc_type *type;
- int count;
- } v;
+ type *vector_gdb_type = tdesc_find_type (gdbarch, this->name.c_str ());
+ if (vector_gdb_type != NULL)
+ return vector_gdb_type;
- /* Struct, union, flags, or enum type. */
- struct
- {
- std::vector<tdesc_type_field> *fields;
- int size;
- } u;
- } u;
+ type *element_gdb_type = this->element_type->make_gdb_type (gdbarch);
+ vector_gdb_type = init_vector_type (element_gdb_type, this->count);
+ TYPE_NAME (vector_gdb_type) = xstrdup (this->name.c_str ());
+
+ return vector_gdb_type;
+ }
+
+ struct tdesc_type *element_type;
+ int count;
+};
+
+/* tdesc_type for struct, union, flags, and enum types. */
+
+struct tdesc_type_with_fields : tdesc_type
+{
+ tdesc_type_with_fields (const std::string &name, tdesc_type_kind kind,
+ int size_ = 0)
+ : tdesc_type (name, kind), size (size_)
+ {}
void accept (tdesc_element_visitor &v) const override
{
v.visit (this);
}
- bool operator== (const tdesc_type &other) const
+ type *make_gdb_type_struct (struct gdbarch *gdbarch) const
{
- return name == other.name && kind == other.kind;
+ type *struct_gdb_type = arch_composite_type (gdbarch, NULL, TYPE_CODE_STRUCT);
+ TYPE_NAME (struct_gdb_type) = xstrdup (this->name.c_str ());
+ TYPE_TAG_NAME (struct_gdb_type) = TYPE_NAME (struct_gdb_type);
+
+ for (const tdesc_type_field &f : this->fields)
+ {
+ if (f.start != -1 && f.end != -1)
+ {
+ /* Bitfield. */
+ struct field *fld;
+ struct type *field_gdb_type;
+ int bitsize, total_size;
+
+ /* This invariant should be preserved while creating types. */
+ gdb_assert (this->size != 0);
+ if (f.type != NULL)
+ field_gdb_type = f.type->make_gdb_type (gdbarch);
+ else if (this->size > 4)
+ field_gdb_type = builtin_type (gdbarch)->builtin_uint64;
+ else
+ field_gdb_type = builtin_type (gdbarch)->builtin_uint32;
+
+ fld = append_composite_type_field_raw
+ (struct_gdb_type, xstrdup (f.name.c_str ()), field_gdb_type);
+
+ /* For little-endian, BITPOS counts from the LSB of
+ the structure and marks the LSB of the field. For
+ big-endian, BITPOS counts from the MSB of the
+ structure and marks the MSB of the field. Either
+ way, it is the number of bits to the "left" of the
+ field. To calculate this in big-endian, we need
+ the total size of the structure. */
+ bitsize = f.end - f.start + 1;
+ total_size = this->size * TARGET_CHAR_BIT;
+ if (gdbarch_bits_big_endian (gdbarch))
+ SET_FIELD_BITPOS (fld[0], total_size - f.start - bitsize);
+ else
+ SET_FIELD_BITPOS (fld[0], f.start);
+ FIELD_BITSIZE (fld[0]) = bitsize;
+ }
+ else
+ {
+ gdb_assert (f.start == -1 && f.end == -1);
+ type *field_gdb_type = f.type->make_gdb_type (gdbarch);
+ append_composite_type_field (struct_gdb_type,
+ xstrdup (f.name.c_str ()),
+ field_gdb_type);
+ }
+ }
+
+ if (this->size != 0)
+ TYPE_LENGTH (struct_gdb_type) = this->size;
+
+ return struct_gdb_type;
}
- bool operator!= (const tdesc_type &other) const
+ type *make_gdb_type_union (struct gdbarch *gdbarch) const
{
- return !(*this == other);
+ type *union_gdb_type = arch_composite_type (gdbarch, NULL, TYPE_CODE_UNION);
+ TYPE_NAME (union_gdb_type) = xstrdup (this->name.c_str ());
+
+ for (const tdesc_type_field &f : this->fields)
+ {
+ type* field_gdb_type = f.type->make_gdb_type (gdbarch);
+ append_composite_type_field (union_gdb_type, xstrdup (f.name.c_str ()),
+ field_gdb_type);
+
+ /* If any of the children of a union are vectors, flag the
+ union as a vector also. This allows e.g. a union of two
+ vector types to show up automatically in "info vector". */
+ if (TYPE_VECTOR (field_gdb_type))
+ TYPE_VECTOR (union_gdb_type) = 1;
+ }
+
+ return union_gdb_type;
}
-};
-typedef std::unique_ptr<tdesc_type> tdesc_type_up;
+ type *make_gdb_type_flags (struct gdbarch *gdbarch) const
+ {
+ type *flags_gdb_type = arch_flags_type (gdbarch, this->name.c_str (),
+ this->size * TARGET_CHAR_BIT);
+
+ for (const tdesc_type_field &f : this->fields)
+ {
+ int bitsize = f.end - f.start + 1;
+
+ gdb_assert (f.type != NULL);
+ type *field_gdb_type = f.type->make_gdb_type (gdbarch);
+ append_flags_type_field (flags_gdb_type, f.start, bitsize,
+ field_gdb_type, f.name.c_str ());
+ }
+
+ return flags_gdb_type;
+ }
+
+ type *make_gdb_type_enum (struct gdbarch *gdbarch) const
+ {
+ type *enum_gdb_type = arch_type (gdbarch, TYPE_CODE_ENUM,
+ this->size * TARGET_CHAR_BIT,
+ this->name.c_str ());
+
+ TYPE_UNSIGNED (enum_gdb_type) = 1;
+ for (const tdesc_type_field &f : this->fields)
+ {
+ struct field *fld
+ = append_composite_type_field_raw (enum_gdb_type,
+ xstrdup (f.name.c_str ()),
+ NULL);
+
+ SET_FIELD_BITPOS (fld[0], f.start);
+ }
+
+ return enum_gdb_type;
+ }
+
+ type *make_gdb_type (struct gdbarch *gdbarch) const override
+ {
+ type *gdb_type = tdesc_find_type (gdbarch, this->name.c_str ());
+ if (gdb_type != NULL)
+ return gdb_type;
+
+ switch (this->kind)
+ {
+ case TDESC_TYPE_STRUCT:
+ return make_gdb_type_struct (gdbarch);
+ case TDESC_TYPE_UNION:
+ return make_gdb_type_union (gdbarch);
+ case TDESC_TYPE_FLAGS:
+ return make_gdb_type_flags (gdbarch);
+ case TDESC_TYPE_ENUM:
+ return make_gdb_type_enum (gdbarch);
+ }
+
+ internal_error (__FILE__, __LINE__,
+ "Type \"%s\" has an unknown kind %d",
+ this->name.c_str (), this->kind);
+
+ return NULL;
+ }
+
+ std::vector<tdesc_type_field> fields;
+ int size;
+};
/* A feature from a target description. Each feature is a collection
of other elements, e.g. registers and types. */
}
/* Predefined types. */
-static struct tdesc_type tdesc_predefined_types[] =
+static tdesc_type_builtin tdesc_predefined_types[] =
{
{ "bool", TDESC_TYPE_BOOL },
{ "int8", TDESC_TYPE_INT8 },
return NULL;
}
-/* Construct, if necessary, and return the GDB type implementing target
- type TDESC_TYPE for architecture GDBARCH. */
-
-static struct type *
-tdesc_gdb_type (struct gdbarch *gdbarch, struct tdesc_type *tdesc_type)
-{
- struct type *type;
-
- switch (tdesc_type->kind)
- {
- /* Predefined types. */
- case TDESC_TYPE_BOOL:
- return builtin_type (gdbarch)->builtin_bool;
-
- case TDESC_TYPE_INT8:
- return builtin_type (gdbarch)->builtin_int8;
-
- case TDESC_TYPE_INT16:
- return builtin_type (gdbarch)->builtin_int16;
-
- case TDESC_TYPE_INT32:
- return builtin_type (gdbarch)->builtin_int32;
-
- case TDESC_TYPE_INT64:
- return builtin_type (gdbarch)->builtin_int64;
-
- case TDESC_TYPE_INT128:
- return builtin_type (gdbarch)->builtin_int128;
-
- case TDESC_TYPE_UINT8:
- return builtin_type (gdbarch)->builtin_uint8;
-
- case TDESC_TYPE_UINT16:
- return builtin_type (gdbarch)->builtin_uint16;
-
- case TDESC_TYPE_UINT32:
- return builtin_type (gdbarch)->builtin_uint32;
-
- case TDESC_TYPE_UINT64:
- return builtin_type (gdbarch)->builtin_uint64;
-
- case TDESC_TYPE_UINT128:
- return builtin_type (gdbarch)->builtin_uint128;
-
- case TDESC_TYPE_CODE_PTR:
- return builtin_type (gdbarch)->builtin_func_ptr;
-
- case TDESC_TYPE_DATA_PTR:
- return builtin_type (gdbarch)->builtin_data_ptr;
-
- default:
- break;
- }
-
- type = tdesc_find_type (gdbarch, tdesc_type->name.c_str ());
- if (type)
- return type;
-
- switch (tdesc_type->kind)
- {
- case TDESC_TYPE_IEEE_SINGLE:
- return arch_float_type (gdbarch, -1, "builtin_type_ieee_single",
- floatformats_ieee_single);
-
- case TDESC_TYPE_IEEE_DOUBLE:
- return arch_float_type (gdbarch, -1, "builtin_type_ieee_double",
- floatformats_ieee_double);
-
- case TDESC_TYPE_ARM_FPA_EXT:
- return arch_float_type (gdbarch, -1, "builtin_type_arm_ext",
- floatformats_arm_ext);
-
- case TDESC_TYPE_I387_EXT:
- return arch_float_type (gdbarch, -1, "builtin_type_i387_ext",
- floatformats_i387_ext);
-
- /* Types defined by a target feature. */
- case TDESC_TYPE_VECTOR:
- {
- struct type *type, *field_type;
-
- field_type = tdesc_gdb_type (gdbarch, tdesc_type->u.v.type);
- type = init_vector_type (field_type, tdesc_type->u.v.count);
- TYPE_NAME (type) = xstrdup (tdesc_type->name.c_str ());
-
- return type;
- }
-
- case TDESC_TYPE_STRUCT:
- {
- struct type *type, *field_type;
-
- type = arch_composite_type (gdbarch, NULL, TYPE_CODE_STRUCT);
- TYPE_NAME (type) = xstrdup (tdesc_type->name.c_str ());
- TYPE_TAG_NAME (type) = TYPE_NAME (type);
-
- for (const tdesc_type_field &f : *tdesc_type->u.u.fields)
- {
- if (f.start != -1 && f.end != -1)
- {
- /* Bitfield. */
- struct field *fld;
- struct type *field_type;
- int bitsize, total_size;
-
- /* This invariant should be preserved while creating types. */
- gdb_assert (tdesc_type->u.u.size != 0);
- if (f.type != NULL)
- field_type = tdesc_gdb_type (gdbarch, f.type);
- else if (tdesc_type->u.u.size > 4)
- field_type = builtin_type (gdbarch)->builtin_uint64;
- else
- field_type = builtin_type (gdbarch)->builtin_uint32;
-
- fld = append_composite_type_field_raw
- (type, xstrdup (f.name.c_str ()), field_type);
-
- /* For little-endian, BITPOS counts from the LSB of
- the structure and marks the LSB of the field. For
- big-endian, BITPOS counts from the MSB of the
- structure and marks the MSB of the field. Either
- way, it is the number of bits to the "left" of the
- field. To calculate this in big-endian, we need
- the total size of the structure. */
- bitsize = f.end - f.start + 1;
- total_size = tdesc_type->u.u.size * TARGET_CHAR_BIT;
- if (gdbarch_bits_big_endian (gdbarch))
- SET_FIELD_BITPOS (fld[0], total_size - f.start - bitsize);
- else
- SET_FIELD_BITPOS (fld[0], f.start);
- FIELD_BITSIZE (fld[0]) = bitsize;
- }
- else
- {
- gdb_assert (f.start == -1 && f.end == -1);
- field_type = tdesc_gdb_type (gdbarch, f.type);
- append_composite_type_field (type, xstrdup (f.name.c_str ()),
- field_type);
- }
- }
-
- if (tdesc_type->u.u.size != 0)
- TYPE_LENGTH (type) = tdesc_type->u.u.size;
- return type;
- }
-
- case TDESC_TYPE_UNION:
- {
- struct type *type, *field_type;
-
- type = arch_composite_type (gdbarch, NULL, TYPE_CODE_UNION);
- TYPE_NAME (type) = xstrdup (tdesc_type->name.c_str ());
-
- for (const tdesc_type_field &f : *tdesc_type->u.u.fields)
- {
- field_type = tdesc_gdb_type (gdbarch, f.type);
- append_composite_type_field (type, xstrdup (f.name.c_str ()),
- field_type);
-
- /* If any of the children of a union are vectors, flag the
- union as a vector also. This allows e.g. a union of two
- vector types to show up automatically in "info vector". */
- if (TYPE_VECTOR (field_type))
- TYPE_VECTOR (type) = 1;
- }
- return type;
- }
-
- case TDESC_TYPE_FLAGS:
- {
- type = arch_flags_type (gdbarch, tdesc_type->name.c_str (),
- tdesc_type->u.u.size * TARGET_CHAR_BIT);
- for (const tdesc_type_field &f : *tdesc_type->u.u.fields)
- {
- struct type *field_type;
- int bitsize = f.end - f.start + 1;
-
- gdb_assert (f.type != NULL);
- field_type = tdesc_gdb_type (gdbarch, f.type);
- append_flags_type_field (type, f.start, bitsize,
- field_type, f.name.c_str ());
- }
-
- return type;
- }
-
- case TDESC_TYPE_ENUM:
- {
- type = arch_type (gdbarch, TYPE_CODE_ENUM,
- tdesc_type->u.u.size * TARGET_CHAR_BIT,
- tdesc_type->name.c_str ());
- TYPE_UNSIGNED (type) = 1;
- for (const tdesc_type_field &f : *tdesc_type->u.u.fields)
- {
- struct field *fld
- = append_composite_type_field_raw (type,
- xstrdup (f.name.c_str ()),
- NULL);
-
- SET_FIELD_BITPOS (fld[0], f.start);
- }
-
- return type;
- }
- }
-
- internal_error (__FILE__, __LINE__,
- "Type \"%s\" has an unknown kind %d",
- tdesc_type->name.c_str (), tdesc_type->kind);
-}
-\f
-
/* Support for registers from target descriptions. */
/* Construct the per-gdbarch data. */
{
/* First check for a predefined or target defined type. */
if (reg->tdesc_type)
- arch_reg->type = tdesc_gdb_type (gdbarch, reg->tdesc_type);
+ arch_reg->type = reg->tdesc_type->make_gdb_type (gdbarch);
/* Next try size-sensitive type shortcuts. */
else if (reg->type == "float")
tdesc_create_vector (struct tdesc_feature *feature, const char *name,
struct tdesc_type *field_type, int count)
{
- struct tdesc_type *type = new tdesc_type (name, TDESC_TYPE_VECTOR);
-
- type->u.v.type = field_type;
- type->u.v.count = count;
-
+ tdesc_type_vector *type = new tdesc_type_vector (name, field_type, count);
feature->types.emplace_back (type);
+
return type;
}
/* See arch/tdesc.h. */
-struct tdesc_type *
+tdesc_type_with_fields *
tdesc_create_struct (struct tdesc_feature *feature, const char *name)
{
- struct tdesc_type *type = new tdesc_type (name, TDESC_TYPE_STRUCT);
-
+ tdesc_type_with_fields *type
+ = new tdesc_type_with_fields (name, TDESC_TYPE_STRUCT);
feature->types.emplace_back (type);
+
return type;
}
/* See arch/tdesc.h. */
void
-tdesc_set_struct_size (struct tdesc_type *type, int size)
+tdesc_set_struct_size (tdesc_type_with_fields *type, int size)
{
gdb_assert (type->kind == TDESC_TYPE_STRUCT);
gdb_assert (size > 0);
- type->u.u.size = size;
+ type->size = size;
}
/* See arch/tdesc.h. */
-struct tdesc_type *
+tdesc_type_with_fields *
tdesc_create_union (struct tdesc_feature *feature, const char *name)
{
- struct tdesc_type *type = new tdesc_type (name, TDESC_TYPE_UNION);
-
+ tdesc_type_with_fields *type
+ = new tdesc_type_with_fields (name, TDESC_TYPE_UNION);
feature->types.emplace_back (type);
+
return type;
}
/* See arch/tdesc.h. */
-struct tdesc_type *
+tdesc_type_with_fields *
tdesc_create_flags (struct tdesc_feature *feature, const char *name,
int size)
{
- struct tdesc_type *type = new tdesc_type (name, TDESC_TYPE_FLAGS);
-
gdb_assert (size > 0);
- type->u.u.size = size;
-
+ tdesc_type_with_fields *type
+ = new tdesc_type_with_fields (name, TDESC_TYPE_FLAGS, size);
feature->types.emplace_back (type);
+
return type;
}
-struct tdesc_type *
+tdesc_type_with_fields *
tdesc_create_enum (struct tdesc_feature *feature, const char *name,
int size)
{
- struct tdesc_type *type = new tdesc_type (name, TDESC_TYPE_ENUM);
-
gdb_assert (size > 0);
- type->u.u.size = size;
-
+ tdesc_type_with_fields *type
+ = new tdesc_type_with_fields (name, TDESC_TYPE_ENUM, size);
feature->types.emplace_back (type);
+
return type;
}
/* See arch/tdesc.h. */
void
-tdesc_add_field (struct tdesc_type *type, const char *field_name,
+tdesc_add_field (tdesc_type_with_fields *type, const char *field_name,
struct tdesc_type *field_type)
{
gdb_assert (type->kind == TDESC_TYPE_UNION
/* Initialize start and end so we know this is not a bit-field
when we print-c-tdesc. */
- type->u.u.fields->emplace_back (field_name, field_type, -1, -1);
+ type->fields.emplace_back (field_name, field_type, -1, -1);
}
void
-tdesc_add_typed_bitfield (struct tdesc_type *type, const char *field_name,
+tdesc_add_typed_bitfield (tdesc_type_with_fields *type, const char *field_name,
int start, int end, struct tdesc_type *field_type)
{
gdb_assert (type->kind == TDESC_TYPE_STRUCT
|| type->kind == TDESC_TYPE_FLAGS);
gdb_assert (start >= 0 && end >= start);
- type->u.u.fields->emplace_back (field_name, field_type, start, end);
+ type->fields.emplace_back (field_name, field_type, start, end);
}
/* See arch/tdesc.h. */
void
-tdesc_add_bitfield (struct tdesc_type *type, const char *field_name,
+tdesc_add_bitfield (tdesc_type_with_fields *type, const char *field_name,
int start, int end)
{
struct tdesc_type *field_type;
gdb_assert (start >= 0 && end >= start);
- if (type->u.u.size > 4)
+ if (type->size > 4)
field_type = tdesc_predefined_type (TDESC_TYPE_UINT64);
else
field_type = tdesc_predefined_type (TDESC_TYPE_UINT32);
/* See arch/tdesc.h. */
void
-tdesc_add_flag (struct tdesc_type *type, int start,
+tdesc_add_flag (tdesc_type_with_fields *type, int start,
const char *flag_name)
{
gdb_assert (type->kind == TDESC_TYPE_FLAGS
|| type->kind == TDESC_TYPE_STRUCT);
- type->u.u.fields->emplace_back (flag_name,
- tdesc_predefined_type (TDESC_TYPE_BOOL),
- start, start);
+ type->fields.emplace_back (flag_name,
+ tdesc_predefined_type (TDESC_TYPE_BOOL),
+ start, start);
}
void
-tdesc_add_enum_value (struct tdesc_type *type, int value,
+tdesc_add_enum_value (tdesc_type_with_fields *type, int value,
const char *name)
{
gdb_assert (type->kind == TDESC_TYPE_ENUM);
-
- type->u.u.fields->emplace_back (name,
- tdesc_predefined_type (TDESC_TYPE_INT32),
- value, -1);
+ type->fields.emplace_back (name,
+ tdesc_predefined_type (TDESC_TYPE_INT32),
+ value, -1);
}
/* See arch/tdesc.h. */
printf_unfiltered ("}\n");
}
- void visit (const tdesc_type *type) override
+ void visit (const tdesc_type_builtin *type) override
+ {
+ error (_("C output is not supported type \"%s\"."), type->name.c_str ());
+ }
+
+ void visit (const tdesc_type_vector *type) override
{
- /* Now we do some "filtering" in order to know which variables to
- declare. This is needed because otherwise we would declare unused
- variables `field_type' and `type'. */
- if (!m_printed_field_type)
+ if (!m_printed_element_type)
{
- printf_unfiltered (" struct tdesc_type *field_type;\n");
- m_printed_field_type = true;
+ printf_unfiltered (" tdesc_type *element_type;\n");
+ m_printed_element_type = true;
}
- if ((type->kind == TDESC_TYPE_UNION
- || type->kind == TDESC_TYPE_STRUCT
- || type->kind == TDESC_TYPE_FLAGS
- || type->kind == TDESC_TYPE_ENUM)
- && !type->u.u.fields->empty ()
- && !m_printed_type)
+ printf_unfiltered
+ (" element_type = tdesc_named_type (feature, \"%s\");\n",
+ type->element_type->name.c_str ());
+ printf_unfiltered
+ (" tdesc_create_vector (feature, \"%s\", element_type, %d);\n",
+ type->name.c_str (), type->count);
+
+ printf_unfiltered ("\n");
+ }
+
+ void visit (const tdesc_type_with_fields *type) override
+ {
+ if (!m_printed_type_with_fields)
{
- printf_unfiltered (" struct tdesc_type *type;\n");
- m_printed_type = true;
+ printf_unfiltered (" tdesc_type_with_fields *type_with_fields;\n");
+ m_printed_type_with_fields = true;
+ }
+
+ if (!type->fields.empty ()
+ && !m_printed_field_type)
+ {
+ printf_unfiltered (" tdesc_type *field_type;\n");
+ m_printed_field_type = true;
}
switch (type->kind)
{
- case TDESC_TYPE_VECTOR:
- printf_unfiltered
- (" field_type = tdesc_named_type (feature, \"%s\");\n",
- type->u.v.type->name.c_str ());
- printf_unfiltered
- (" tdesc_create_vector (feature, \"%s\", field_type, %d);\n",
- type->name.c_str (), type->u.v.count);
- break;
case TDESC_TYPE_STRUCT:
case TDESC_TYPE_FLAGS:
if (type->kind == TDESC_TYPE_STRUCT)
{
printf_unfiltered
- (" type = tdesc_create_struct (feature, \"%s\");\n",
+ (" type_with_fields = tdesc_create_struct (feature, \"%s\");\n",
type->name.c_str ());
- if (type->u.u.size != 0)
+ if (type->size != 0)
printf_unfiltered
- (" tdesc_set_struct_size (type, %d);\n",
- type->u.u.size);
+ (" tdesc_set_struct_size (type_with_fields, %d);\n", type->size);
}
else
{
printf_unfiltered
- (" type = tdesc_create_flags (feature, \"%s\", %d);\n",
- type->name.c_str (), type->u.u.size);
+ (" type_with_fields = tdesc_create_flags (feature, \"%s\", %d);\n",
+ type->name.c_str (), type->size);
}
- for (const tdesc_type_field &f : *type->u.u.fields)
+ for (const tdesc_type_field &f : type->fields)
{
const char *type_name;
{
gdb_assert (f.start == f.end);
printf_unfiltered
- (" tdesc_add_flag (type, %d, \"%s\");\n",
+ (" tdesc_add_flag (type_with_fields, %d, \"%s\");\n",
f.start, f.name.c_str ());
}
- else if ((type->u.u.size == 4
- && f.type->kind == TDESC_TYPE_UINT32)
- || (type->u.u.size == 8
+ else if ((type->size == 4 && f.type->kind == TDESC_TYPE_UINT32)
+ || (type->size == 8
&& f.type->kind == TDESC_TYPE_UINT64))
{
printf_unfiltered
- (" tdesc_add_bitfield (type, \"%s\", %d, %d);\n",
+ (" tdesc_add_bitfield (type_with_fields, \"%s\", %d, %d);\n",
f.name.c_str (), f.start, f.end);
}
else
{
printf_unfiltered
- (" field_type = tdesc_named_type (feature,"
- " \"%s\");\n",
+ (" field_type = tdesc_named_type (feature, \"%s\");\n",
type_name);
printf_unfiltered
- (" tdesc_add_typed_bitfield (type, \"%s\","
+ (" tdesc_add_typed_bitfield (type_with_fields, \"%s\","
" %d, %d, field_type);\n",
f.name.c_str (), f.start, f.end);
}
" \"%s\");\n",
type_name);
printf_unfiltered
- (" tdesc_add_field (type, \"%s\", field_type);\n",
+ (" tdesc_add_field (type_with_fields, \"%s\", field_type);\n",
f.name.c_str ());
}
}
break;
case TDESC_TYPE_UNION:
printf_unfiltered
- (" type = tdesc_create_union (feature, \"%s\");\n",
+ (" type_with_fields = tdesc_create_union (feature, \"%s\");\n",
type->name.c_str ());
- for (const tdesc_type_field &f : *type->u.u.fields)
+ for (const tdesc_type_field &f : type->fields)
{
printf_unfiltered
(" field_type = tdesc_named_type (feature, \"%s\");\n",
f.type->name.c_str ());
printf_unfiltered
- (" tdesc_add_field (type, \"%s\", field_type);\n",
+ (" tdesc_add_field (type_with_fields, \"%s\", field_type);\n",
f.name.c_str ());
}
break;
case TDESC_TYPE_ENUM:
printf_unfiltered
- (" type = tdesc_create_enum (feature, \"%s\", %d);\n",
- type->name.c_str (), type->u.u.size);
- for (const tdesc_type_field &f : *type->u.u.fields)
+ (" type_with_fields = tdesc_create_enum (feature, \"%s\", %d);\n",
+ type->name.c_str (), type->size);
+ for (const tdesc_type_field &f : type->fields)
printf_unfiltered
- (" tdesc_add_enum_value (type, %d, \"%s\");\n",
+ (" tdesc_add_enum_value (type_with_fields, %d, \"%s\");\n",
f.start, f.name.c_str ());
break;
default:
error (_("C output is not supported type \"%s\"."), type->name.c_str ());
}
+
printf_unfiltered ("\n");
}
private:
char *m_function;
+
+ /* Did we print "struct tdesc_type *element_type;" yet? */
+ bool m_printed_element_type = false;
+
+ /* Did we print "struct tdesc_type_with_fields *element_type;" yet? */
+ bool m_printed_type_with_fields = false;
+
+ /* Did we print "struct tdesc_type *field_type;" yet? */
bool m_printed_field_type = false;
- bool m_printed_type = false;
};
/* Print target description feature in C. */
const char *key, const char *value);
void tdesc_add_compatible (struct target_desc *,
const struct bfd_arch_info *);
-struct tdesc_type *tdesc_create_enum (struct tdesc_feature *feature,
- const char *name,
- int size);
-void tdesc_add_typed_bitfield (struct tdesc_type *type, const char *field_name,
+tdesc_type_with_fields *tdesc_create_enum (struct tdesc_feature *feature,
+ const char *name,
+ int size);
+void tdesc_add_typed_bitfield (tdesc_type_with_fields *type, const char *field_name,
int start, int end,
struct tdesc_type *field_type);
-void tdesc_add_enum_value (struct tdesc_type *type, int value,
+void tdesc_add_enum_value (tdesc_type_with_fields *type, int value,
const char *name);
#if GDB_SELF_TEST
int next_regnum;
/* The struct or union we are currently parsing, or last parsed. */
- struct tdesc_type *current_type;
+ tdesc_type_with_fields *current_type;
/* The byte size of the current struct/flags type, if specified. Zero
if not specified. Flags values must specify a size. */
{
struct tdesc_parsing_data *data = (struct tdesc_parsing_data *) user_data;
char *id = (char *) xml_find_attribute (attributes, "id")->value;
- struct tdesc_type *type;
struct gdb_xml_value *attr;
- type = tdesc_create_struct (data->current_feature, id);
- data->current_type = type;
+ tdesc_type_with_fields *type_with_fields
+ = tdesc_create_struct (data->current_feature, id);
+ data->current_type = type_with_fields;
data->current_type_size = 0;
attr = xml_find_attribute (attributes, "size");
_("Struct size %s is larger than maximum (%d)"),
pulongest (size), MAX_FIELD_SIZE);
}
- tdesc_set_struct_size (type, size);
+ tdesc_set_struct_size (type_with_fields, size);
data->current_type_size = size;
}
}
char *id = (char *) xml_find_attribute (attributes, "id")->value;
ULONGEST size = * (ULONGEST *)
xml_find_attribute (attributes, "size")->value;
- struct tdesc_type *type;
if (size > MAX_FIELD_SIZE)
{
_("Flags size %s is larger than maximum (%d)"),
pulongest (size), MAX_FIELD_SIZE);
}
- type = tdesc_create_flags (data->current_feature, id, size);
- data->current_type = type;
+ data->current_type = tdesc_create_flags (data->current_feature, id, size);
data->current_type_size = size;
}
char *id = (char *) xml_find_attribute (attributes, "id")->value;
int size = * (ULONGEST *)
xml_find_attribute (attributes, "size")->value;
- struct tdesc_type *type;
if (size > MAX_FIELD_SIZE)
{
_("Enum size %s is larger than maximum (%d)"),
pulongest (size), MAX_FIELD_SIZE);
}
- type = tdesc_create_enum (data->current_feature, id, size);
- data->current_type = type;
+ data->current_type = tdesc_create_enum (data->current_feature, id, size);
data->current_type_size = 0;
}
if (start != -1)
{
- struct tdesc_type *t = data->current_type;
+ tdesc_type_with_fields *t = data->current_type;
/* Older versions of gdb can't handle elided end values.
Stick with that for now, to help ensure backward compatibility.