aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/ChangeLog49
-rw-r--r--gdb/arch/tdesc.h25
-rw-r--r--gdb/features/aarch64-core.c36
-rw-r--r--gdb/features/aarch64-fpu.c99
-rw-r--r--gdb/features/arc-arcompact.c32
-rw-r--r--gdb/features/arc-v2.c40
-rw-r--r--gdb/features/arm/arm-with-iwmmxt.c27
-rw-r--r--gdb/features/i386/32bit-avx512.c6
-rw-r--r--gdb/features/i386/32bit-core.c40
-rw-r--r--gdb/features/i386/32bit-mpx.c42
-rw-r--r--gdb/features/i386/32bit-sse.c75
-rw-r--r--gdb/features/i386/64bit-avx512.c49
-rw-r--r--gdb/features/i386/64bit-core.c40
-rw-r--r--gdb/features/i386/64bit-mpx.c42
-rw-r--r--gdb/features/i386/64bit-sse.c75
-rw-r--r--gdb/features/i386/x32-core.c40
-rw-r--r--gdb/features/rs6000/powerpc-7400.c33
-rw-r--r--gdb/features/rs6000/powerpc-altivec32.c33
-rw-r--r--gdb/features/rs6000/powerpc-altivec32l.c33
-rw-r--r--gdb/features/rs6000/powerpc-altivec64.c33
-rw-r--r--gdb/features/rs6000/powerpc-altivec64l.c33
-rw-r--r--gdb/features/rs6000/powerpc-cell32l.c33
-rw-r--r--gdb/features/rs6000/powerpc-cell64l.c33
-rw-r--r--gdb/features/rs6000/powerpc-isa205-altivec32l.c33
-rw-r--r--gdb/features/rs6000/powerpc-isa205-altivec64l.c33
-rw-r--r--gdb/features/rs6000/powerpc-isa205-vsx32l.c33
-rw-r--r--gdb/features/rs6000/powerpc-isa205-vsx64l.c33
-rw-r--r--gdb/features/rs6000/powerpc-vsx32.c33
-rw-r--r--gdb/features/rs6000/powerpc-vsx32l.c33
-rw-r--r--gdb/features/rs6000/powerpc-vsx64.c33
-rw-r--r--gdb/features/rs6000/powerpc-vsx64l.c33
-rw-r--r--gdb/features/s390-gs-linux64.c45
-rw-r--r--gdb/features/s390-tevx-linux64.c45
-rw-r--r--gdb/features/s390-vx-linux64.c45
-rw-r--r--gdb/features/s390x-gs-linux64.c45
-rw-r--r--gdb/features/s390x-tevx-linux64.c45
-rw-r--r--gdb/features/s390x-vx-linux64.c45
-rw-r--r--gdb/gdbserver/ChangeLog8
-rw-r--r--gdb/gdbserver/tdesc.c14
-rw-r--r--gdb/target-descriptions.c727
-rw-r--r--gdb/target-descriptions.h10
-rw-r--r--gdb/xml-tdesc.c20
42 files changed, 1187 insertions, 1074 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 2c4e428..1d3a3e8 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,54 @@
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_arch_reg): Add constructor.
(DEF_VEC_O (tdesc_arch_reg)): Remove.
diff --git a/gdb/arch/tdesc.h b/gdb/arch/tdesc.h
index 78bb0fb..2240df6 100644
--- a/gdb/arch/tdesc.h
+++ b/gdb/arch/tdesc.h
@@ -20,6 +20,9 @@
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;
@@ -51,37 +54,37 @@ struct tdesc_type *tdesc_create_vector (struct tdesc_feature *feature,
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. */
diff --git a/gdb/features/aarch64-core.c b/gdb/features/aarch64-core.c
index f3fad40..618a7ef 100644
--- a/gdb/features/aarch64-core.c
+++ b/gdb/features/aarch64-core.c
@@ -9,24 +9,24 @@ create_feature_aarch64_core (struct target_desc *result, long regnum)
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");
diff --git a/gdb/features/aarch64-fpu.c b/gdb/features/aarch64-fpu.c
index 3672f25..7328eb1 100644
--- a/gdb/features/aarch64-fpu.c
+++ b/gdb/features/aarch64-fpu.c
@@ -9,89 +9,90 @@ create_feature_aarch64_fpu (struct target_desc *result, long regnum)
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");
diff --git a/gdb/features/arc-arcompact.c b/gdb/features/arc-arcompact.c
index fd11e31..79b6889 100644
--- a/gdb/features/arc-arcompact.c
+++ b/gdb/features/arc-arcompact.c
@@ -51,22 +51,22 @@ initialize_tdesc_arc_arcompact (void)
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");
diff --git a/gdb/features/arc-v2.c b/gdb/features/arc-v2.c
index 6eeefdb..9908b4c 100644
--- a/gdb/features/arc-v2.c
+++ b/gdb/features/arc-v2.c
@@ -51,26 +51,26 @@ initialize_tdesc_arc_v2 (void)
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");
diff --git a/gdb/features/arm/arm-with-iwmmxt.c b/gdb/features/arm/arm-with-iwmmxt.c
index 5f839a0..5d6c357 100644
--- a/gdb/features/arm/arm-with-iwmmxt.c
+++ b/gdb/features/arm/arm-with-iwmmxt.c
@@ -34,26 +34,27 @@ initialize_tdesc_arm_with_iwmmxt (void)
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");
diff --git a/gdb/features/i386/32bit-avx512.c b/gdb/features/i386/32bit-avx512.c
index 82b20c5..39c7e97 100644
--- a/gdb/features/i386/32bit-avx512.c
+++ b/gdb/features/i386/32bit-avx512.c
@@ -9,9 +9,9 @@ create_feature_i386_32bit_avx512 (struct target_desc *result, long regnum)
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");
diff --git a/gdb/features/i386/32bit-core.c b/gdb/features/i386/32bit-core.c
index ec903f3..de2ce47 100644
--- a/gdb/features/i386/32bit-core.c
+++ b/gdb/features/i386/32bit-core.c
@@ -9,26 +9,26 @@ create_feature_i386_32bit_core (struct target_desc *result, long regnum)
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");
diff --git a/gdb/features/i386/32bit-mpx.c b/gdb/features/i386/32bit-mpx.c
index 25a3fb1..38910d3 100644
--- a/gdb/features/i386/32bit-mpx.c
+++ b/gdb/features/i386/32bit-mpx.c
@@ -9,37 +9,37 @@ create_feature_i386_32bit_mpx (struct target_desc *result, long regnum)
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");
diff --git a/gdb/features/i386/32bit-sse.c b/gdb/features/i386/32bit-sse.c
index 01b2058..1c8a7e8 100644
--- a/gdb/features/i386/32bit-sse.c
+++ b/gdb/features/i386/32bit-sse.c
@@ -9,57 +9,58 @@ create_feature_i386_32bit_sse (struct target_desc *result, long regnum)
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");
diff --git a/gdb/features/i386/64bit-avx512.c b/gdb/features/i386/64bit-avx512.c
index fb50960..a565f42 100644
--- a/gdb/features/i386/64bit-avx512.c
+++ b/gdb/features/i386/64bit-avx512.c
@@ -9,44 +9,45 @@ create_feature_i386_64bit_avx512 (struct target_desc *result, long regnum)
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");
diff --git a/gdb/features/i386/64bit-core.c b/gdb/features/i386/64bit-core.c
index 14d4a19..f4cad06 100644
--- a/gdb/features/i386/64bit-core.c
+++ b/gdb/features/i386/64bit-core.c
@@ -9,26 +9,26 @@ create_feature_i386_64bit_core (struct target_desc *result, long regnum)
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");
diff --git a/gdb/features/i386/64bit-mpx.c b/gdb/features/i386/64bit-mpx.c
index 2751e03..f8730b4 100644
--- a/gdb/features/i386/64bit-mpx.c
+++ b/gdb/features/i386/64bit-mpx.c
@@ -9,37 +9,37 @@ create_feature_i386_64bit_mpx (struct target_desc *result, long regnum)
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");
diff --git a/gdb/features/i386/64bit-sse.c b/gdb/features/i386/64bit-sse.c
index bc38498..e4f99c2 100644
--- a/gdb/features/i386/64bit-sse.c
+++ b/gdb/features/i386/64bit-sse.c
@@ -9,57 +9,58 @@ create_feature_i386_64bit_sse (struct target_desc *result, long regnum)
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");
diff --git a/gdb/features/i386/x32-core.c b/gdb/features/i386/x32-core.c
index 3939abc..acafc7d 100644
--- a/gdb/features/i386/x32-core.c
+++ b/gdb/features/i386/x32-core.c
@@ -9,26 +9,26 @@ create_feature_i386_x32_core (struct target_desc *result, long regnum)
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");
diff --git a/gdb/features/rs6000/powerpc-7400.c b/gdb/features/rs6000/powerpc-7400.c
index 32b6995..ba9f12c 100644
--- a/gdb/features/rs6000/powerpc-7400.c
+++ b/gdb/features/rs6000/powerpc-7400.c
@@ -138,31 +138,32 @@ initialize_tdesc_powerpc_7400 (void)
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");
diff --git a/gdb/features/rs6000/powerpc-altivec32.c b/gdb/features/rs6000/powerpc-altivec32.c
index e97132e..9cb83ca 100644
--- a/gdb/features/rs6000/powerpc-altivec32.c
+++ b/gdb/features/rs6000/powerpc-altivec32.c
@@ -90,31 +90,32 @@ initialize_tdesc_powerpc_altivec32 (void)
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");
diff --git a/gdb/features/rs6000/powerpc-altivec32l.c b/gdb/features/rs6000/powerpc-altivec32l.c
index a9445d9..afaf8ed 100644
--- a/gdb/features/rs6000/powerpc-altivec32l.c
+++ b/gdb/features/rs6000/powerpc-altivec32l.c
@@ -94,31 +94,32 @@ initialize_tdesc_powerpc_altivec32l (void)
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");
diff --git a/gdb/features/rs6000/powerpc-altivec64.c b/gdb/features/rs6000/powerpc-altivec64.c
index 3b626a9..94041e1 100644
--- a/gdb/features/rs6000/powerpc-altivec64.c
+++ b/gdb/features/rs6000/powerpc-altivec64.c
@@ -90,31 +90,32 @@ initialize_tdesc_powerpc_altivec64 (void)
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");
diff --git a/gdb/features/rs6000/powerpc-altivec64l.c b/gdb/features/rs6000/powerpc-altivec64l.c
index cca5353..c7ed171 100644
--- a/gdb/features/rs6000/powerpc-altivec64l.c
+++ b/gdb/features/rs6000/powerpc-altivec64l.c
@@ -94,31 +94,32 @@ initialize_tdesc_powerpc_altivec64l (void)
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");
diff --git a/gdb/features/rs6000/powerpc-cell32l.c b/gdb/features/rs6000/powerpc-cell32l.c
index c615b8d..390d7b2 100644
--- a/gdb/features/rs6000/powerpc-cell32l.c
+++ b/gdb/features/rs6000/powerpc-cell32l.c
@@ -96,31 +96,32 @@ initialize_tdesc_powerpc_cell32l (void)
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");
diff --git a/gdb/features/rs6000/powerpc-cell64l.c b/gdb/features/rs6000/powerpc-cell64l.c
index 5040e5e..39890ba 100644
--- a/gdb/features/rs6000/powerpc-cell64l.c
+++ b/gdb/features/rs6000/powerpc-cell64l.c
@@ -96,31 +96,32 @@ initialize_tdesc_powerpc_cell64l (void)
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");
diff --git a/gdb/features/rs6000/powerpc-isa205-altivec32l.c b/gdb/features/rs6000/powerpc-isa205-altivec32l.c
index 943d02d..203bb4a 100644
--- a/gdb/features/rs6000/powerpc-isa205-altivec32l.c
+++ b/gdb/features/rs6000/powerpc-isa205-altivec32l.c
@@ -94,31 +94,32 @@ initialize_tdesc_powerpc_isa205_altivec32l (void)
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");
diff --git a/gdb/features/rs6000/powerpc-isa205-altivec64l.c b/gdb/features/rs6000/powerpc-isa205-altivec64l.c
index d454bac..8f66a16 100644
--- a/gdb/features/rs6000/powerpc-isa205-altivec64l.c
+++ b/gdb/features/rs6000/powerpc-isa205-altivec64l.c
@@ -94,31 +94,32 @@ initialize_tdesc_powerpc_isa205_altivec64l (void)
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");
diff --git a/gdb/features/rs6000/powerpc-isa205-vsx32l.c b/gdb/features/rs6000/powerpc-isa205-vsx32l.c
index 09fd5ce..fc0f615 100644
--- a/gdb/features/rs6000/powerpc-isa205-vsx32l.c
+++ b/gdb/features/rs6000/powerpc-isa205-vsx32l.c
@@ -94,31 +94,32 @@ initialize_tdesc_powerpc_isa205_vsx32l (void)
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");
diff --git a/gdb/features/rs6000/powerpc-isa205-vsx64l.c b/gdb/features/rs6000/powerpc-isa205-vsx64l.c
index d295ab7..3313d04 100644
--- a/gdb/features/rs6000/powerpc-isa205-vsx64l.c
+++ b/gdb/features/rs6000/powerpc-isa205-vsx64l.c
@@ -94,31 +94,32 @@ initialize_tdesc_powerpc_isa205_vsx64l (void)
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");
diff --git a/gdb/features/rs6000/powerpc-vsx32.c b/gdb/features/rs6000/powerpc-vsx32.c
index 8cf7562..1a824a8 100644
--- a/gdb/features/rs6000/powerpc-vsx32.c
+++ b/gdb/features/rs6000/powerpc-vsx32.c
@@ -90,31 +90,32 @@ initialize_tdesc_powerpc_vsx32 (void)
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");
diff --git a/gdb/features/rs6000/powerpc-vsx32l.c b/gdb/features/rs6000/powerpc-vsx32l.c
index e8c1881..f5bf11e 100644
--- a/gdb/features/rs6000/powerpc-vsx32l.c
+++ b/gdb/features/rs6000/powerpc-vsx32l.c
@@ -94,31 +94,32 @@ initialize_tdesc_powerpc_vsx32l (void)
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");
diff --git a/gdb/features/rs6000/powerpc-vsx64.c b/gdb/features/rs6000/powerpc-vsx64.c
index 30953c5..601df39 100644
--- a/gdb/features/rs6000/powerpc-vsx64.c
+++ b/gdb/features/rs6000/powerpc-vsx64.c
@@ -90,31 +90,32 @@ initialize_tdesc_powerpc_vsx64 (void)
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");
diff --git a/gdb/features/rs6000/powerpc-vsx64l.c b/gdb/features/rs6000/powerpc-vsx64l.c
index 5f12650..d34bd81 100644
--- a/gdb/features/rs6000/powerpc-vsx64l.c
+++ b/gdb/features/rs6000/powerpc-vsx64l.c
@@ -94,31 +94,32 @@ initialize_tdesc_powerpc_vsx64l (void)
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");
diff --git a/gdb/features/s390-gs-linux64.c b/gdb/features/s390-gs-linux64.c
index 39e7043..126835b 100644
--- a/gdb/features/s390-gs-linux64.c
+++ b/gdb/features/s390-gs-linux64.c
@@ -115,41 +115,42 @@ initialize_tdesc_s390_gs_linux64 (void)
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");
diff --git a/gdb/features/s390-tevx-linux64.c b/gdb/features/s390-tevx-linux64.c
index d9b18d3..a9ee9e1 100644
--- a/gdb/features/s390-tevx-linux64.c
+++ b/gdb/features/s390-tevx-linux64.c
@@ -115,41 +115,42 @@ initialize_tdesc_s390_tevx_linux64 (void)
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");
diff --git a/gdb/features/s390-vx-linux64.c b/gdb/features/s390-vx-linux64.c
index b2138dd..b6c5dda 100644
--- a/gdb/features/s390-vx-linux64.c
+++ b/gdb/features/s390-vx-linux64.c
@@ -93,41 +93,42 @@ initialize_tdesc_s390_vx_linux64 (void)
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");
diff --git a/gdb/features/s390x-gs-linux64.c b/gdb/features/s390x-gs-linux64.c
index 652e6cf..5ab3e3d 100644
--- a/gdb/features/s390x-gs-linux64.c
+++ b/gdb/features/s390x-gs-linux64.c
@@ -99,41 +99,42 @@ initialize_tdesc_s390x_gs_linux64 (void)
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");
diff --git a/gdb/features/s390x-tevx-linux64.c b/gdb/features/s390x-tevx-linux64.c
index 02afd3a..e5ecedf 100644
--- a/gdb/features/s390x-tevx-linux64.c
+++ b/gdb/features/s390x-tevx-linux64.c
@@ -99,41 +99,42 @@ initialize_tdesc_s390x_tevx_linux64 (void)
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");
diff --git a/gdb/features/s390x-vx-linux64.c b/gdb/features/s390x-vx-linux64.c
index 120db53..1f24349 100644
--- a/gdb/features/s390x-vx-linux64.c
+++ b/gdb/features/s390x-vx-linux64.c
@@ -77,41 +77,42 @@ initialize_tdesc_s390x_vx_linux64 (void)
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");
diff --git a/gdb/gdbserver/ChangeLog b/gdb/gdbserver/ChangeLog
index 04c6f23..171bc53 100644
--- a/gdb/gdbserver/ChangeLog
+++ b/gdb/gdbserver/ChangeLog
@@ -1,3 +1,11 @@
+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.
diff --git a/gdb/gdbserver/tdesc.c b/gdb/gdbserver/tdesc.c
index e2c4288..5ea2341 100644
--- a/gdb/gdbserver/tdesc.c
+++ b/gdb/gdbserver/tdesc.c
@@ -146,7 +146,7 @@ tdesc_create_feature (struct target_desc *tdesc, const char *name,
/* See arch/tdesc.h. */
-struct tdesc_type *
+tdesc_type_with_fields *
tdesc_create_flags (struct tdesc_feature *feature, const char *name,
int size)
{
@@ -156,7 +156,7 @@ tdesc_create_flags (struct tdesc_feature *feature, const char *name,
/* 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)
{}
@@ -170,7 +170,7 @@ tdesc_named_type (const struct tdesc_feature *feature, const char *id)
/* See arch/tdesc.h. */
-struct tdesc_type *
+tdesc_type_with_fields *
tdesc_create_union (struct tdesc_feature *feature, const char *id)
{
return NULL;
@@ -178,7 +178,7 @@ tdesc_create_union (struct tdesc_feature *feature, const char *id)
/* See arch/tdesc.h. */
-struct tdesc_type *
+tdesc_type_with_fields *
tdesc_create_struct (struct tdesc_feature *feature, const char *id)
{
return NULL;
@@ -222,20 +222,20 @@ tdesc_create_vector (struct tdesc_feature *feature, const char *name,
}
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)
{
}
diff --git a/gdb/target-descriptions.c b/gdb/target-descriptions.c
index 0f47fee..12d72fa 100644
--- a/gdb/target-descriptions.c
+++ b/gdb/target-descriptions.c
@@ -49,7 +49,10 @@ public:
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;
};
@@ -200,82 +203,313 @@ struct tdesc_type : tdesc_element
{
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. */
@@ -725,7 +959,7 @@ tdesc_feature_name (const struct tdesc_feature *feature)
}
/* Predefined types. */
-static struct tdesc_type tdesc_predefined_types[] =
+static tdesc_type_builtin tdesc_predefined_types[] =
{
{ "bool", TDESC_TYPE_BOOL },
{ "int8", TDESC_TYPE_INT8 },
@@ -796,218 +1030,6 @@ tdesc_find_type (struct gdbarch *gdbarch, const char *id)
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);
-}
-
-
/* Support for registers from target descriptions. */
/* Construct the per-gdbarch data. */
@@ -1195,7 +1217,7 @@ tdesc_register_type (struct gdbarch *gdbarch, int regno)
{
/* 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")
@@ -1455,81 +1477,78 @@ struct tdesc_type *
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
@@ -1537,31 +1556,31 @@ tdesc_add_field (struct tdesc_type *type, const char *field_name,
/* 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);
@@ -1572,26 +1591,25 @@ tdesc_add_bitfield (struct tdesc_type *type, const char *field_name,
/* 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. */
@@ -1845,57 +1863,64 @@ public:
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;
@@ -1911,26 +1936,24 @@ public:
{
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);
}
@@ -1944,37 +1967,38 @@ public:
" \"%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");
}
@@ -1995,8 +2019,15 @@ protected:
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. */
diff --git a/gdb/target-descriptions.h b/gdb/target-descriptions.h
index e97a373..8465c9e 100644
--- a/gdb/target-descriptions.h
+++ b/gdb/target-descriptions.h
@@ -209,13 +209,13 @@ void set_tdesc_property (struct target_desc *,
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
diff --git a/gdb/xml-tdesc.c b/gdb/xml-tdesc.c
index a50ac5e..ae689fd 100644
--- a/gdb/xml-tdesc.c
+++ b/gdb/xml-tdesc.c
@@ -83,7 +83,7 @@ struct tdesc_parsing_data
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. */
@@ -244,11 +244,11 @@ tdesc_start_struct (struct gdb_xml_parser *parser,
{
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");
@@ -262,7 +262,7 @@ tdesc_start_struct (struct gdb_xml_parser *parser,
_("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;
}
}
@@ -276,7 +276,6 @@ tdesc_start_flags (struct gdb_xml_parser *parser,
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)
{
@@ -284,9 +283,8 @@ tdesc_start_flags (struct gdb_xml_parser *parser,
_("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;
}
@@ -299,7 +297,6 @@ tdesc_start_enum (struct gdb_xml_parser *parser,
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)
{
@@ -307,9 +304,8 @@ tdesc_start_enum (struct gdb_xml_parser *parser,
_("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;
}
@@ -375,7 +371,7 @@ tdesc_start_field (struct gdb_xml_parser *parser,
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.