Use visitor pattern for "maint print c-tdesc"
authorYao Qi <yao.qi@linaro.org>
Wed, 26 Jul 2017 11:56:54 +0000 (12:56 +0100)
committerYao Qi <yao.qi@linaro.org>
Wed, 26 Jul 2017 11:56:54 +0000 (12:56 +0100)
Target description can be modeled as a tree, the target description
is the root node, features are children nodes, registers and types are
grand-children nodes.  So command "maint print c-tdesc" in effect
traverse/visit each node, and print them in c.  This can be
implemented by visitor pattern, this is the first reason.  Secondly,
I want to this command prints c files in a different way for some
specific xml files, but still print c files the same way for the rest
of xml files.  Third, I even want to print xml files from target
descriptions, so that GDBserver can use it to reply GDB's query
qXfer:features:read:target.xml.

gdb:

2017-07-26  Yao Qi  <yao.qi@linaro.org>

* target-descriptions.c (tdesc_element_visitor): New class.
(tdesc_element): New class.
(tdesc_reg): Inherit from tdesc_element.
(tdesc_reg::accept): New function.
(tdesc_type): Inherit from tdesc_element.
(tdesc_type::accept): New function.
(tdesc_feature): Inherit from tdesc_element.
(tdesc_feature::accept): New function.
(target_desc): Inherit from tdesc_element.
(target_desc::target_desc): New.
(target_desc::~target_desc): New.
(target_desc::accept): New.
(allocate_target_description): Use new.
(free_target_description): Use delete.
(print_c_tdesc): New class.
(maint_print_c_tdesc_cmd): Adjust.

* features/aarch64.c: Re-generated.
* features/arc-arcompact.c: Re-generated.
* features/arc-v2.c: Re-generated.
* features/arm/arm-with-iwmmxt.c: Re-generated.
* features/arm/arm-with-m.c: Re-generated.
* features/arm/arm-with-m-fpa-layout.c: Re-generated.
* features/arm/arm-with-m-vfp-d16.c: Re-generated.
* features/arm/arm-with-neon.c: Re-generated.
* features/arm/arm-with-vfpv2.c: Re-generated.
* features/arm/arm-with-vfpv3.c: Re-generated.
* features/i386/amd64-avx-avx512.c: Re-generated.
* features/i386/amd64-avx-avx512-linux.c: Re-generated.
* features/i386/amd64-avx.c: Re-generated.
* features/i386/amd64-avx-linux.c: Re-generated.
* features/i386/amd64-avx-mpx-avx512-pku.c: Re-generated.
* features/i386/amd64-avx-mpx-avx512-pku-linux.c: Re-generated.
* features/i386/amd64-avx-mpx.c: Re-generated.
* features/i386/amd64-avx-mpx-linux.c: Re-generated.
* features/i386/amd64.c: Re-generated.
* features/i386/amd64-linux.c: Re-generated.
* features/i386/amd64-mpx.c: Re-generated.
* features/i386/amd64-mpx-linux.c: Re-generated.
* features/i386/i386-avx-avx512.c: Re-generated.
* features/i386/i386-avx-avx512-linux.c: Re-generated.
* features/i386/i386-avx.c: Re-generated.
* features/i386/i386-avx-linux.c: Re-generated.
* features/i386/i386-avx-mpx-avx512-pku.c: Re-generated.
* features/i386/i386-avx-mpx-avx512-pku-linux.c: Re-generated.
* features/i386/i386-avx-mpx.c: Re-generated.
* features/i386/i386-avx-mpx-linux.c: Re-generated.
* features/i386/i386.c: Re-generated.
* features/i386/i386-linux.c: Re-generated.
* features/i386/i386-mmx.c: Re-generated.
* features/i386/i386-mmx-linux.c: Re-generated.
* features/i386/i386-mpx.c: Re-generated.
* features/i386/i386-mpx-linux.c: Re-generated.
* features/i386/x32-avx-avx512.c: Re-generated.
* features/i386/x32-avx-avx512-linux.c: Re-generated.
* features/i386/x32-avx.c: Re-generated.
* features/i386/x32-avx-linux.c: Re-generated.
* features/i386/x32.c: Re-generated.
* features/i386/x32-linux.c: Re-generated.
* features/microblaze.c: Re-generated.
* features/microblaze-with-stack-protect.c: Re-generated.
* features/mips64-dsp-linux.c: Re-generated.
* features/mips64-linux.c: Re-generated.
* features/mips-dsp-linux.c: Re-generated.
* features/mips-linux.c: Re-generated.
* features/nds32.c: Re-generated.
* features/nios2.c: Re-generated.
* features/nios2-linux.c: Re-generated.
* features/rs6000/powerpc-32.c: Re-generated.
* features/rs6000/powerpc-32l.c: Re-generated.
* features/rs6000/powerpc-403.c: Re-generated.
* features/rs6000/powerpc-403gc.c : Re-generated.
* features/rs6000/powerpc-405.c: Re-generated.
* features/rs6000/powerpc-505.c: Re-generated.
* features/rs6000/powerpc-601.c: Re-generated.
* features/rs6000/powerpc-602.c: Re-generated.
* features/rs6000/powerpc-603.c: Re-generated.
* features/rs6000/powerpc-604.c: Re-generated.
* features/rs6000/powerpc-64.c: Re-generated.
* features/rs6000/powerpc-64l.c: Re-generated.
* features/rs6000/powerpc-7400.c: Re-generated.
* features/rs6000/powerpc-750.c: Re-generated.
* features/rs6000/powerpc-860.c: Re-generated.
* features/rs6000/powerpc-altivec32.c: Re-generated.
* features/rs6000/powerpc-altivec32l.c: Re-generated.
* features/rs6000/powerpc-altivec64.c: Re-generated.
* features/rs6000/powerpc-altivec64l.c: Re-generated.
* features/rs6000/powerpc-cell32l.c: Re-generated.
* features/rs6000/powerpc-cell64l.c: Re-generated.
* features/rs6000/powerpc-e500.c: Re-generated.
* features/rs6000/powerpc-e500l.c: Re-generated.
* features/rs6000/powerpc-isa205-32l.c: Re-generated.
* features/rs6000/powerpc-isa205-64l.c: Re-generated.
* features/rs6000/powerpc-isa205-altivec32l.c: Re-generated.
* features/rs6000/powerpc-isa205-altivec64l.c: Re-generated.
* features/rs6000/powerpc-isa205-vsx32l.c: Re-generated.
* features/rs6000/powerpc-isa205-vsx64l.c: Re-generated.
* features/rs6000/powerpc-vsx32.c: Re-generated.
* features/rs6000/powerpc-vsx32l.c: Re-generated.
* features/rs6000/powerpc-vsx64.c: Re-generated.
* features/rs6000/powerpc-vsx64l.c: Re-generated.
* features/rs6000/rs6000.c: Re-generated.
* features/s390-linux32.c: Re-generated.
* features/s390-linux32v1.c: Re-generated.
* features/s390-linux32v2.c: Re-generated.
* features/s390-linux64.c: Re-generated.
* features/s390-linux64v1.c: Re-generated.
* features/s390-linux64v2.c: Re-generated.
* features/s390-te-linux64.c: Re-generated.
* features/s390-tevx-linux64.c: Re-generated.
* features/s390-vx-linux64.c: Re-generated.
* features/s390x-linux64.c: Re-generated.
* features/s390x-linux64v1.c: Re-generated.
* features/s390x-linux64v2.c: Re-generated.
* features/s390x-te-linux64.c: Re-generated.
* features/s390x-tevx-linux64.c: Re-generated.
* features/s390x-vx-linux64.c: Re-generated.
* features/sparc/sparc32-solaris.c: Re-generated.
* features/sparc/sparc64-solaris.c: Re-generated.
* features/tic6x-c62x.c: Re-generated.
* features/tic6x-c62x-linux.c: Re-generated.
* features/tic6x-c64x.c: Re-generated.
* features/tic6x-c64x-linux.c: Re-generated.
* features/tic6x-c64xp.c: Re-generated.
* features/tic6x-c64xp-linux.c: Re-generated.

96 files changed:
gdb/ChangeLog
gdb/features/aarch64.c
gdb/features/arc-arcompact.c
gdb/features/arc-v2.c
gdb/features/arm/arm-with-iwmmxt.c
gdb/features/arm/arm-with-m-fpa-layout.c
gdb/features/arm/arm-with-m-vfp-d16.c
gdb/features/arm/arm-with-m.c
gdb/features/arm/arm-with-neon.c
gdb/features/arm/arm-with-vfpv2.c
gdb/features/arm/arm-with-vfpv3.c
gdb/features/i386/amd64-avx-avx512-linux.c
gdb/features/i386/amd64-avx-avx512.c
gdb/features/i386/amd64-avx-linux.c
gdb/features/i386/amd64-avx-mpx-avx512-pku-linux.c
gdb/features/i386/amd64-avx-mpx-avx512-pku.c
gdb/features/i386/amd64-avx-mpx-linux.c
gdb/features/i386/amd64-avx-mpx.c
gdb/features/i386/amd64-avx.c
gdb/features/i386/amd64-linux.c
gdb/features/i386/amd64-mpx-linux.c
gdb/features/i386/amd64-mpx.c
gdb/features/i386/amd64.c
gdb/features/i386/i386-avx-avx512-linux.c
gdb/features/i386/i386-avx-avx512.c
gdb/features/i386/i386-avx-linux.c
gdb/features/i386/i386-avx-mpx-avx512-pku-linux.c
gdb/features/i386/i386-avx-mpx-avx512-pku.c
gdb/features/i386/i386-avx-mpx-linux.c
gdb/features/i386/i386-avx-mpx.c
gdb/features/i386/i386-avx.c
gdb/features/i386/i386-linux.c
gdb/features/i386/i386-mmx-linux.c
gdb/features/i386/i386-mmx.c
gdb/features/i386/i386-mpx-linux.c
gdb/features/i386/i386-mpx.c
gdb/features/i386/i386.c
gdb/features/i386/x32-avx-avx512-linux.c
gdb/features/i386/x32-avx-avx512.c
gdb/features/i386/x32-avx-linux.c
gdb/features/i386/x32-avx.c
gdb/features/i386/x32-linux.c
gdb/features/i386/x32.c
gdb/features/mips-dsp-linux.c
gdb/features/mips-linux.c
gdb/features/mips64-dsp-linux.c
gdb/features/mips64-linux.c
gdb/features/nds32.c
gdb/features/nios2-linux.c
gdb/features/nios2.c
gdb/features/rs6000/powerpc-32.c
gdb/features/rs6000/powerpc-32l.c
gdb/features/rs6000/powerpc-64.c
gdb/features/rs6000/powerpc-64l.c
gdb/features/rs6000/powerpc-7400.c
gdb/features/rs6000/powerpc-altivec32.c
gdb/features/rs6000/powerpc-altivec32l.c
gdb/features/rs6000/powerpc-altivec64.c
gdb/features/rs6000/powerpc-altivec64l.c
gdb/features/rs6000/powerpc-cell32l.c
gdb/features/rs6000/powerpc-cell64l.c
gdb/features/rs6000/powerpc-e500.c
gdb/features/rs6000/powerpc-e500l.c
gdb/features/rs6000/powerpc-isa205-32l.c
gdb/features/rs6000/powerpc-isa205-64l.c
gdb/features/rs6000/powerpc-isa205-altivec32l.c
gdb/features/rs6000/powerpc-isa205-altivec64l.c
gdb/features/rs6000/powerpc-isa205-vsx32l.c
gdb/features/rs6000/powerpc-isa205-vsx64l.c
gdb/features/rs6000/powerpc-vsx32.c
gdb/features/rs6000/powerpc-vsx32l.c
gdb/features/rs6000/powerpc-vsx64.c
gdb/features/rs6000/powerpc-vsx64l.c
gdb/features/rs6000/rs6000.c
gdb/features/s390-linux32.c
gdb/features/s390-linux32v1.c
gdb/features/s390-linux32v2.c
gdb/features/s390-linux64.c
gdb/features/s390-linux64v1.c
gdb/features/s390-linux64v2.c
gdb/features/s390-te-linux64.c
gdb/features/s390-tevx-linux64.c
gdb/features/s390-vx-linux64.c
gdb/features/s390x-linux64.c
gdb/features/s390x-linux64v1.c
gdb/features/s390x-linux64v2.c
gdb/features/s390x-te-linux64.c
gdb/features/s390x-tevx-linux64.c
gdb/features/s390x-vx-linux64.c
gdb/features/tic6x-c62x-linux.c
gdb/features/tic6x-c62x.c
gdb/features/tic6x-c64x-linux.c
gdb/features/tic6x-c64x.c
gdb/features/tic6x-c64xp-linux.c
gdb/features/tic6x-c64xp.c
gdb/target-descriptions.c

index d42ba8e6038cabcf92419237f542b9d9b11f9cb0..577c598f75610c3e08c29f718d1d254a8f020a56 100644 (file)
@@ -1,3 +1,131 @@
+2017-07-26  Yao Qi  <yao.qi@linaro.org>
+
+       * target-descriptions.c (tdesc_element_visitor): New class.
+       (tdesc_element): New class.
+       (tdesc_reg): Inherit from tdesc_element.
+       (tdesc_reg::accept): New function.
+       (tdesc_type): Inherit from tdesc_element.
+       (tdesc_type::accept): New function.
+       (tdesc_feature): Inherit from tdesc_element.
+       (tdesc_feature::accept): New function.
+       (target_desc): Inherit from tdesc_element.
+       (target_desc::target_desc): New.
+       (target_desc::~target_desc): New.
+       (target_desc::accept): New.
+       (allocate_target_description): Use new.
+       (free_target_description): Use delete.
+       (print_c_tdesc): New class.
+       (maint_print_c_tdesc_cmd): Adjust.
+
+       * features/aarch64.c: Re-generated.
+       * features/arc-arcompact.c: Re-generated.
+       * features/arc-v2.c: Re-generated.
+       * features/arm/arm-with-iwmmxt.c: Re-generated.
+       * features/arm/arm-with-m.c: Re-generated.
+       * features/arm/arm-with-m-fpa-layout.c: Re-generated.
+       * features/arm/arm-with-m-vfp-d16.c: Re-generated.
+       * features/arm/arm-with-neon.c: Re-generated.
+       * features/arm/arm-with-vfpv2.c: Re-generated.
+       * features/arm/arm-with-vfpv3.c: Re-generated.
+       * features/i386/amd64-avx-avx512.c: Re-generated.
+       * features/i386/amd64-avx-avx512-linux.c: Re-generated.
+       * features/i386/amd64-avx.c: Re-generated.
+       * features/i386/amd64-avx-linux.c: Re-generated.
+       * features/i386/amd64-avx-mpx-avx512-pku.c: Re-generated.
+       * features/i386/amd64-avx-mpx-avx512-pku-linux.c: Re-generated.
+       * features/i386/amd64-avx-mpx.c: Re-generated.
+       * features/i386/amd64-avx-mpx-linux.c: Re-generated.
+       * features/i386/amd64.c: Re-generated.
+       * features/i386/amd64-linux.c: Re-generated.
+       * features/i386/amd64-mpx.c: Re-generated.
+       * features/i386/amd64-mpx-linux.c: Re-generated.
+       * features/i386/i386-avx-avx512.c: Re-generated.
+       * features/i386/i386-avx-avx512-linux.c: Re-generated.
+       * features/i386/i386-avx.c: Re-generated.
+       * features/i386/i386-avx-linux.c: Re-generated.
+       * features/i386/i386-avx-mpx-avx512-pku.c: Re-generated.
+       * features/i386/i386-avx-mpx-avx512-pku-linux.c: Re-generated.
+       * features/i386/i386-avx-mpx.c: Re-generated.
+       * features/i386/i386-avx-mpx-linux.c: Re-generated.
+       * features/i386/i386.c: Re-generated.
+       * features/i386/i386-linux.c: Re-generated.
+       * features/i386/i386-mmx.c: Re-generated.
+       * features/i386/i386-mmx-linux.c: Re-generated.
+       * features/i386/i386-mpx.c: Re-generated.
+       * features/i386/i386-mpx-linux.c: Re-generated.
+       * features/i386/x32-avx-avx512.c: Re-generated.
+       * features/i386/x32-avx-avx512-linux.c: Re-generated.
+       * features/i386/x32-avx.c: Re-generated.
+       * features/i386/x32-avx-linux.c: Re-generated.
+       * features/i386/x32.c: Re-generated.
+       * features/i386/x32-linux.c: Re-generated.
+       * features/microblaze.c: Re-generated.
+       * features/microblaze-with-stack-protect.c: Re-generated.
+       * features/mips64-dsp-linux.c: Re-generated.
+       * features/mips64-linux.c: Re-generated.
+       * features/mips-dsp-linux.c: Re-generated.
+       * features/mips-linux.c: Re-generated.
+       * features/nds32.c: Re-generated.
+       * features/nios2.c: Re-generated.
+       * features/nios2-linux.c: Re-generated.
+       * features/rs6000/powerpc-32.c: Re-generated.
+       * features/rs6000/powerpc-32l.c: Re-generated.
+       * features/rs6000/powerpc-403.c: Re-generated.
+       * features/rs6000/powerpc-403gc.c : Re-generated.
+       * features/rs6000/powerpc-405.c: Re-generated.
+       * features/rs6000/powerpc-505.c: Re-generated.
+       * features/rs6000/powerpc-601.c: Re-generated.
+       * features/rs6000/powerpc-602.c: Re-generated.
+       * features/rs6000/powerpc-603.c: Re-generated.
+       * features/rs6000/powerpc-604.c: Re-generated.
+       * features/rs6000/powerpc-64.c: Re-generated.
+       * features/rs6000/powerpc-64l.c: Re-generated.
+       * features/rs6000/powerpc-7400.c: Re-generated.
+       * features/rs6000/powerpc-750.c: Re-generated.
+       * features/rs6000/powerpc-860.c: Re-generated.
+       * features/rs6000/powerpc-altivec32.c: Re-generated.
+       * features/rs6000/powerpc-altivec32l.c: Re-generated.
+       * features/rs6000/powerpc-altivec64.c: Re-generated.
+       * features/rs6000/powerpc-altivec64l.c: Re-generated.
+       * features/rs6000/powerpc-cell32l.c: Re-generated.
+       * features/rs6000/powerpc-cell64l.c: Re-generated.
+       * features/rs6000/powerpc-e500.c: Re-generated.
+       * features/rs6000/powerpc-e500l.c: Re-generated.
+       * features/rs6000/powerpc-isa205-32l.c: Re-generated.
+       * features/rs6000/powerpc-isa205-64l.c: Re-generated.
+       * features/rs6000/powerpc-isa205-altivec32l.c: Re-generated.
+       * features/rs6000/powerpc-isa205-altivec64l.c: Re-generated.
+       * features/rs6000/powerpc-isa205-vsx32l.c: Re-generated.
+       * features/rs6000/powerpc-isa205-vsx64l.c: Re-generated.
+       * features/rs6000/powerpc-vsx32.c: Re-generated.
+       * features/rs6000/powerpc-vsx32l.c: Re-generated.
+       * features/rs6000/powerpc-vsx64.c: Re-generated.
+       * features/rs6000/powerpc-vsx64l.c: Re-generated.
+       * features/rs6000/rs6000.c: Re-generated.
+       * features/s390-linux32.c: Re-generated.
+       * features/s390-linux32v1.c: Re-generated.
+       * features/s390-linux32v2.c: Re-generated.
+       * features/s390-linux64.c: Re-generated.
+       * features/s390-linux64v1.c: Re-generated.
+       * features/s390-linux64v2.c: Re-generated.
+       * features/s390-te-linux64.c: Re-generated.
+       * features/s390-tevx-linux64.c: Re-generated.
+       * features/s390-vx-linux64.c: Re-generated.
+       * features/s390x-linux64.c: Re-generated.
+       * features/s390x-linux64v1.c: Re-generated.
+       * features/s390x-linux64v2.c: Re-generated.
+       * features/s390x-te-linux64.c: Re-generated.
+       * features/s390x-tevx-linux64.c: Re-generated.
+       * features/s390x-vx-linux64.c: Re-generated.
+       * features/sparc/sparc32-solaris.c: Re-generated.
+       * features/sparc/sparc64-solaris.c: Re-generated.
+       * features/tic6x-c62x.c: Re-generated.
+       * features/tic6x-c62x-linux.c: Re-generated.
+       * features/tic6x-c64x.c: Re-generated.
+       * features/tic6x-c64x-linux.c: Re-generated.
+       * features/tic6x-c64xp.c: Re-generated.
+       * features/tic6x-c64xp-linux.c: Re-generated.
+
 2017-07-26  Yao Qi  <yao.qi@linaro.org>
 
        * i386-linux-tdep.c (i386_linux_read_description): New function.
index e9eaed8bf4c2e39b89064f66add7d91febdced33..7411cacd4b80bd51a3301a650de588260b0c30ba 100644 (file)
@@ -10,13 +10,13 @@ static void
 initialize_tdesc_aarch64 (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-  struct tdesc_type *field_type;
-  struct tdesc_type *type;
-
   set_tdesc_architecture (result, bfd_scan_arch ("aarch64"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.aarch64.core");
+  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, "");
index a527cc2d9ffa49e09c638ab4ce2277f62eb51176..ea84a40d197d3736a2c568a6e37843bc8a707c8a 100644 (file)
@@ -10,12 +10,10 @@ static void
 initialize_tdesc_arc_arcompact (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-  struct tdesc_type *field_type;
-  struct tdesc_type *type;
-
   set_tdesc_architecture (result, bfd_scan_arch ("ARC700"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.arc.core.arcompact");
   tdesc_create_reg (feature, "r0", 0, 1, NULL, 32, "int");
   tdesc_create_reg (feature, "r1", 1, 1, NULL, 32, "int");
@@ -53,6 +51,8 @@ initialize_tdesc_arc_arcompact (void)
   tdesc_create_reg (feature, "pcl", 33, 1, "", 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);
index b2bdfb5119a5917091606aaee134f7efe728d614..1eefc24687612cd07478dc436f6ce28f342c83dc 100644 (file)
@@ -10,12 +10,10 @@ static void
 initialize_tdesc_arc_v2 (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-  struct tdesc_type *field_type;
-  struct tdesc_type *type;
-
   set_tdesc_architecture (result, bfd_scan_arch ("ARCv2"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.arc.core.v2");
   tdesc_create_reg (feature, "r0", 0, 1, NULL, 32, "int");
   tdesc_create_reg (feature, "r1", 1, 1, NULL, 32, "int");
@@ -53,6 +51,8 @@ initialize_tdesc_arc_v2 (void)
   tdesc_create_reg (feature, "pcl", 33, 1, "", 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);
index 1770e03e1beba0f4a4c00f44998c52a5a348f75e..5f839a000de6647049d0828a06effc2bd1168928 100644 (file)
@@ -10,12 +10,10 @@ static void
 initialize_tdesc_arm_with_iwmmxt (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-  struct tdesc_type *field_type;
-  struct tdesc_type *type;
-
   set_tdesc_architecture (result, bfd_scan_arch ("iwmmxt"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.arm.core");
   tdesc_create_reg (feature, "r0", 0, 1, NULL, 32, "uint32");
   tdesc_create_reg (feature, "r1", 1, 1, NULL, 32, "uint32");
@@ -36,6 +34,7 @@ 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);
 
@@ -45,6 +44,7 @@ initialize_tdesc_arm_with_iwmmxt (void)
   field_type = tdesc_named_type (feature, "uint32");
   tdesc_create_vector (feature, "iwmmxt_v2u32", field_type, 2);
 
+  struct tdesc_type *type;
   type = tdesc_create_union (feature, "iwmmxt_vec64i");
   field_type = tdesc_named_type (feature, "iwmmxt_v8u8");
   tdesc_add_field (type, "u8", field_type);
index f720614959ca91dcedd34c140ba2f4eeabb05ae6..99bebc311c142cfa8ddc575635c5d17fbdb6b74d 100644 (file)
@@ -10,10 +10,10 @@ static void
 initialize_tdesc_arm_with_m_fpa_layout (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-
   set_tdesc_architecture (result, bfd_scan_arch ("arm"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.arm.m-profile");
   tdesc_create_reg (feature, "r0", 0, 1, NULL, 32, "int");
   tdesc_create_reg (feature, "r1", 1, 1, NULL, 32, "int");
index 069baac4db846e27964b56437b247b407ba0facc..ab9167316a70044f0945c9cbc4ac9d7843b81e69 100644 (file)
@@ -10,10 +10,10 @@ static void
 initialize_tdesc_arm_with_m_vfp_d16 (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-
   set_tdesc_architecture (result, bfd_scan_arch ("arm"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.arm.m-profile");
   tdesc_create_reg (feature, "r0", 0, 1, NULL, 32, "int");
   tdesc_create_reg (feature, "r1", 1, 1, NULL, 32, "int");
index 64d31bb9c6f85dcdac104c846c8b191e809f7b7f..619fd72430fd92f86fbf7726dff3575b53e8297e 100644 (file)
@@ -10,10 +10,10 @@ static void
 initialize_tdesc_arm_with_m (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-
   set_tdesc_architecture (result, bfd_scan_arch ("arm"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.arm.m-profile");
   tdesc_create_reg (feature, "r0", 0, 1, NULL, 32, "int");
   tdesc_create_reg (feature, "r1", 1, 1, NULL, 32, "int");
index d365c0fd3ae09dcaa9877d6beea30186720144be..682ad758c0d01d3081a9a93630ea53f7aaa40b5b 100644 (file)
@@ -10,10 +10,10 @@ static void
 initialize_tdesc_arm_with_neon (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-
   set_tdesc_architecture (result, bfd_scan_arch ("arm"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.arm.core");
   tdesc_create_reg (feature, "r0", 0, 1, NULL, 32, "uint32");
   tdesc_create_reg (feature, "r1", 1, 1, NULL, 32, "uint32");
index 0ebbfef6e2accca03901adc4cc49857c48de9eab..368256ccef91cc6f3924bcecb85021ad6eff1aac 100644 (file)
@@ -10,10 +10,10 @@ static void
 initialize_tdesc_arm_with_vfpv2 (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-
   set_tdesc_architecture (result, bfd_scan_arch ("arm"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.arm.core");
   tdesc_create_reg (feature, "r0", 0, 1, NULL, 32, "uint32");
   tdesc_create_reg (feature, "r1", 1, 1, NULL, 32, "uint32");
index e235dfa762684e874cf44aa2f61ac33c4f4f4384..ade7c95f46582dba50eaba3339ceb62b79701795 100644 (file)
@@ -10,10 +10,10 @@ static void
 initialize_tdesc_arm_with_vfpv3 (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-
   set_tdesc_architecture (result, bfd_scan_arch ("arm"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.arm.core");
   tdesc_create_reg (feature, "r0", 0, 1, NULL, 32, "uint32");
   tdesc_create_reg (feature, "r1", 1, 1, NULL, 32, "uint32");
index 00fbf3a7914f520ee5627717ff03a38944b7be25..de58f066a8dcc06f12fbd37c85dbb66fdc356344 100644 (file)
@@ -10,15 +10,15 @@ static void
 initialize_tdesc_amd64_avx_avx512_linux (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-  struct tdesc_type *field_type;
-  struct tdesc_type *type;
-
   set_tdesc_architecture (result, bfd_scan_arch ("i386:x86-64"));
 
   set_tdesc_osabi (result, osabi_from_tdesc_string ("GNU/Linux"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core");
+  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, "");
index f1ebde10715984b22e90ef11d451dd4f01196c56..354d826323a9ef0b7fc719beae70484d81af1903 100644 (file)
@@ -10,13 +10,13 @@ static void
 initialize_tdesc_amd64_avx_avx512 (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-  struct tdesc_type *field_type;
-  struct tdesc_type *type;
-
   set_tdesc_architecture (result, bfd_scan_arch ("i386:x86-64"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core");
+  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, "");
index 1d56dbff8b1a1c2aae1d0e33d85f8b4afed636e1..00dfd3c532560ea67697b31fa767be1c29bfc655 100644 (file)
@@ -10,15 +10,15 @@ static void
 initialize_tdesc_amd64_avx_linux (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-  struct tdesc_type *field_type;
-  struct tdesc_type *type;
-
   set_tdesc_architecture (result, bfd_scan_arch ("i386:x86-64"));
 
   set_tdesc_osabi (result, osabi_from_tdesc_string ("GNU/Linux"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core");
+  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, "");
index 4e4ced7714b76866b37bc9ee8d467212423480f9..7fd016f39055adc8428f0a70ea0663332531564c 100644 (file)
@@ -10,15 +10,15 @@ static void
 initialize_tdesc_amd64_avx_mpx_avx512_pku_linux (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-  struct tdesc_type *field_type;
-  struct tdesc_type *type;
-
   set_tdesc_architecture (result, bfd_scan_arch ("i386:x86-64"));
 
   set_tdesc_osabi (result, osabi_from_tdesc_string ("GNU/Linux"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core");
+  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, "");
index f119e52f5d5ca5d782c0442d7e29958016027725..bade64dc7cb3569efe374a445f9d6ad97128b1cf 100644 (file)
@@ -10,13 +10,13 @@ static void
 initialize_tdesc_amd64_avx_mpx_avx512_pku (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-  struct tdesc_type *field_type;
-  struct tdesc_type *type;
-
   set_tdesc_architecture (result, bfd_scan_arch ("i386:x86-64"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core");
+  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, "");
index 26c133975dc6c5c9272f2833a727d8f9a340e650..5fe11270d00e806ce4019818e3727f11d3742886 100644 (file)
@@ -10,15 +10,15 @@ static void
 initialize_tdesc_amd64_avx_mpx_linux (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-  struct tdesc_type *field_type;
-  struct tdesc_type *type;
-
   set_tdesc_architecture (result, bfd_scan_arch ("i386:x86-64"));
 
   set_tdesc_osabi (result, osabi_from_tdesc_string ("GNU/Linux"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core");
+  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, "");
index 0c5161fe8d51b047c2fbcc3d31b965bcdb4408c4..5dced1553815a2a81b199d38084ab856898e51b5 100644 (file)
@@ -10,13 +10,13 @@ static void
 initialize_tdesc_amd64_avx_mpx (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-  struct tdesc_type *field_type;
-  struct tdesc_type *type;
-
   set_tdesc_architecture (result, bfd_scan_arch ("i386:x86-64"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core");
+  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, "");
index 61d3ff56a4fd31f7b35fe483b4978d80d07cd611..016689acdcf80e88ca77435d7c61e797b5dd4348 100644 (file)
@@ -10,13 +10,13 @@ static void
 initialize_tdesc_amd64_avx (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-  struct tdesc_type *field_type;
-  struct tdesc_type *type;
-
   set_tdesc_architecture (result, bfd_scan_arch ("i386:x86-64"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core");
+  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, "");
index 0e921ba9a162758c5fc1bfb523d43bba1e4d8b92..58c4405033ce64bc4b1fd5ee339805d5d0a286c6 100644 (file)
@@ -10,15 +10,15 @@ static void
 initialize_tdesc_amd64_linux (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-  struct tdesc_type *field_type;
-  struct tdesc_type *type;
-
   set_tdesc_architecture (result, bfd_scan_arch ("i386:x86-64"));
 
   set_tdesc_osabi (result, osabi_from_tdesc_string ("GNU/Linux"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core");
+  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, "");
index e26a74a7f72634cc6ec13dd65dd3ead18a05e173..dcf92f96890c3043be9d4b78b3cd2b8aa808a500 100644 (file)
@@ -10,15 +10,15 @@ static void
 initialize_tdesc_amd64_mpx_linux (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-  struct tdesc_type *field_type;
-  struct tdesc_type *type;
-
   set_tdesc_architecture (result, bfd_scan_arch ("i386:x86-64"));
 
   set_tdesc_osabi (result, osabi_from_tdesc_string ("GNU/Linux"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core");
+  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, "");
index 026fdb8625f9d0c22adb7246363a2f320ea6ab36..ed7767d28f4b488b18c03dbc2032ca5c1b283121 100644 (file)
@@ -10,13 +10,13 @@ static void
 initialize_tdesc_amd64_mpx (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-  struct tdesc_type *field_type;
-  struct tdesc_type *type;
-
   set_tdesc_architecture (result, bfd_scan_arch ("i386:x86-64"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core");
+  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, "");
index 31ab6ccfba471f90d79c201d79027fb49bb3b7e8..4ad79cb99a90c167670018478ec6b1f88c1b4db2 100644 (file)
@@ -10,13 +10,13 @@ static void
 initialize_tdesc_amd64 (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-  struct tdesc_type *field_type;
-  struct tdesc_type *type;
-
   set_tdesc_architecture (result, bfd_scan_arch ("i386:x86-64"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core");
+  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, "");
index 81149d570b58af00bd5c310307ac9492073871b3..545149da2d8760dabafc24c286905123e4e94762 100644 (file)
@@ -10,15 +10,15 @@ static void
 initialize_tdesc_i386_avx_avx512_linux (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-  struct tdesc_type *field_type;
-  struct tdesc_type *type;
-
   set_tdesc_architecture (result, bfd_scan_arch ("i386"));
 
   set_tdesc_osabi (result, osabi_from_tdesc_string ("GNU/Linux"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core");
+  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, "");
index 1075ca0eea9c4a537fecafc580250c5f683adbe3..585a0ac3c9b8f362adb1a4ec90231d863962ed18 100644 (file)
@@ -10,13 +10,13 @@ static void
 initialize_tdesc_i386_avx_avx512 (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-  struct tdesc_type *field_type;
-  struct tdesc_type *type;
-
   set_tdesc_architecture (result, bfd_scan_arch ("i386"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core");
+  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, "");
index 4a8c6b58b959c006fa666281aef63bfcfa4f5eec..3ef087d6d1bbf76955dd1bc1b5c260507707d920 100644 (file)
@@ -10,15 +10,15 @@ static void
 initialize_tdesc_i386_avx_linux (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-  struct tdesc_type *field_type;
-  struct tdesc_type *type;
-
   set_tdesc_architecture (result, bfd_scan_arch ("i386"));
 
   set_tdesc_osabi (result, osabi_from_tdesc_string ("GNU/Linux"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core");
+  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, "");
index f90c834037e1fbc55917cc35f00a13e5b9a0c865..e6eebf153de726c87d39f5002a25ab1467f1f2d8 100644 (file)
@@ -10,15 +10,15 @@ static void
 initialize_tdesc_i386_avx_mpx_avx512_pku_linux (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-  struct tdesc_type *field_type;
-  struct tdesc_type *type;
-
   set_tdesc_architecture (result, bfd_scan_arch ("i386"));
 
   set_tdesc_osabi (result, osabi_from_tdesc_string ("GNU/Linux"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core");
+  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, "");
index 08d9b4b579dc8c9a8746a4a1f3800a5a91e05a68..d7dd3bb8a7a862633ee4a9c2f2b99d7964468bbc 100644 (file)
@@ -10,13 +10,13 @@ static void
 initialize_tdesc_i386_avx_mpx_avx512_pku (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-  struct tdesc_type *field_type;
-  struct tdesc_type *type;
-
   set_tdesc_architecture (result, bfd_scan_arch ("i386"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core");
+  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, "");
index 4b27bfcb05a8f51b22657af67b4c90a74e15aa4a..f62c48769515f8938f8260f121045da0c13cf894 100644 (file)
@@ -10,15 +10,15 @@ static void
 initialize_tdesc_i386_avx_mpx_linux (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-  struct tdesc_type *field_type;
-  struct tdesc_type *type;
-
   set_tdesc_architecture (result, bfd_scan_arch ("i386"));
 
   set_tdesc_osabi (result, osabi_from_tdesc_string ("GNU/Linux"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core");
+  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, "");
index b27b40a3a3e19cf917062abc280c213557fe2684..f479bdaff213cab22bc1130d38384e93507f3ef5 100644 (file)
@@ -10,13 +10,13 @@ static void
 initialize_tdesc_i386_avx_mpx (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-  struct tdesc_type *field_type;
-  struct tdesc_type *type;
-
   set_tdesc_architecture (result, bfd_scan_arch ("i386"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core");
+  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, "");
index 1cb0f9e92ad8b2288fbe1d7ac7635cbfe5aa6953..f888335ada7c57042bd76b7c4e9d4d9d1bad1b37 100644 (file)
@@ -10,13 +10,13 @@ static void
 initialize_tdesc_i386_avx (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-  struct tdesc_type *field_type;
-  struct tdesc_type *type;
-
   set_tdesc_architecture (result, bfd_scan_arch ("i386"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core");
+  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, "");
index c7796c3452dcd5359969bb5fa307787cbcfc33f9..039484295e4bace8ff8e35ec634f0b700aa78cd0 100644 (file)
@@ -10,15 +10,15 @@ static void
 initialize_tdesc_i386_linux (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-  struct tdesc_type *field_type;
-  struct tdesc_type *type;
-
   set_tdesc_architecture (result, bfd_scan_arch ("i386"));
 
   set_tdesc_osabi (result, osabi_from_tdesc_string ("GNU/Linux"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core");
+  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, "");
index e53b55f5a264548ddcc5ddf660da2aae98fb353d..15779725247ddfdb97d248fbb3c5619a875fd224 100644 (file)
@@ -10,15 +10,15 @@ static void
 initialize_tdesc_i386_mmx_linux (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-  struct tdesc_type *field_type;
-  struct tdesc_type *type;
-
   set_tdesc_architecture (result, bfd_scan_arch ("i386"));
 
   set_tdesc_osabi (result, osabi_from_tdesc_string ("GNU/Linux"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core");
+  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, "");
index 74f67edc2d61925ea9025912537856226f25d462..02aee8966eb135cef46f21b8e80a3158fe3b69f1 100644 (file)
@@ -10,13 +10,13 @@ static void
 initialize_tdesc_i386_mmx (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-  struct tdesc_type *field_type;
-  struct tdesc_type *type;
-
   set_tdesc_architecture (result, bfd_scan_arch ("i386"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core");
+  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, "");
index 43ea192a303ddd898b7355882472681b3e4d2b4e..6dea8e03fad19a2454521116aba1d58b41c976c1 100644 (file)
@@ -10,15 +10,15 @@ static void
 initialize_tdesc_i386_mpx_linux (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-  struct tdesc_type *field_type;
-  struct tdesc_type *type;
-
   set_tdesc_architecture (result, bfd_scan_arch ("i386"));
 
   set_tdesc_osabi (result, osabi_from_tdesc_string ("GNU/Linux"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core");
+  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, "");
index e832d2e188f6d3bd1ef5938d8b92dc3786379840..d08441b7de98ef2963602c60664993fb57b752ac 100644 (file)
@@ -10,13 +10,13 @@ static void
 initialize_tdesc_i386_mpx (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-  struct tdesc_type *field_type;
-  struct tdesc_type *type;
-
   set_tdesc_architecture (result, bfd_scan_arch ("i386"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core");
+  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, "");
index ede73fc60e94a989666f99b89011db292a6bc949..eb9a266aed3d324cea0fa425010ee136908fc864 100644 (file)
@@ -10,13 +10,13 @@ static void
 initialize_tdesc_i386 (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-  struct tdesc_type *field_type;
-  struct tdesc_type *type;
-
   set_tdesc_architecture (result, bfd_scan_arch ("i386"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core");
+  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, "");
index 0467d87969db03c81a9e74252cae676f5e80fc69..c023a1047bb36b906b019e751a79d7accfaf2fb1 100644 (file)
@@ -10,15 +10,15 @@ static void
 initialize_tdesc_x32_avx_avx512_linux (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-  struct tdesc_type *field_type;
-  struct tdesc_type *type;
-
   set_tdesc_architecture (result, bfd_scan_arch ("i386:x64-32"));
 
   set_tdesc_osabi (result, osabi_from_tdesc_string ("GNU/Linux"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core");
+  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, "");
index a7a2d5273867b14e3e5211d260fb7a3982c31029..9630c9910a9aaafd8fe15c851972835ca8c221ef 100644 (file)
@@ -10,13 +10,13 @@ static void
 initialize_tdesc_x32_avx_avx512 (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-  struct tdesc_type *field_type;
-  struct tdesc_type *type;
-
   set_tdesc_architecture (result, bfd_scan_arch ("i386:x64-32"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core");
+  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, "");
index 84068150486aaf0b10da1719823edaeeec336be5..211d1384ee055b1d32f04fade4a97d98fed85c29 100644 (file)
@@ -10,15 +10,15 @@ static void
 initialize_tdesc_x32_avx_linux (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-  struct tdesc_type *field_type;
-  struct tdesc_type *type;
-
   set_tdesc_architecture (result, bfd_scan_arch ("i386:x64-32"));
 
   set_tdesc_osabi (result, osabi_from_tdesc_string ("GNU/Linux"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core");
+  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, "");
index 7f62e8f4add26fca8178ac8f596a4bc2510213df..775e834cef1c28e6bf89c014d29909ebd22ac4d7 100644 (file)
@@ -10,13 +10,13 @@ static void
 initialize_tdesc_x32_avx (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-  struct tdesc_type *field_type;
-  struct tdesc_type *type;
-
   set_tdesc_architecture (result, bfd_scan_arch ("i386:x64-32"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core");
+  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, "");
index ae49549c7f01a2b3a8f14dad1e1290fbb504769f..05d502b535ac9ab61f27893d2c69cf7ac21a52a2 100644 (file)
@@ -10,15 +10,15 @@ static void
 initialize_tdesc_x32_linux (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-  struct tdesc_type *field_type;
-  struct tdesc_type *type;
-
   set_tdesc_architecture (result, bfd_scan_arch ("i386:x64-32"));
 
   set_tdesc_osabi (result, osabi_from_tdesc_string ("GNU/Linux"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core");
+  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, "");
index 6005d99d3d7a7e29357b12aeebd162702902fd2b..728b5ce96d3f70868e7b345e5b903764aa483180 100644 (file)
@@ -10,13 +10,13 @@ static void
 initialize_tdesc_x32 (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-  struct tdesc_type *field_type;
-  struct tdesc_type *type;
-
   set_tdesc_architecture (result, bfd_scan_arch ("i386:x64-32"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.i386.core");
+  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, "");
index 80ceb223a3703303f95a46738ad2f57c6c3a378e..26e9c6b01de47c7da9a6e8d8d1ada9167982d880 100644 (file)
@@ -10,12 +10,12 @@ static void
 initialize_tdesc_mips_dsp_linux (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-
   set_tdesc_architecture (result, bfd_scan_arch ("mips"));
 
   set_tdesc_osabi (result, osabi_from_tdesc_string ("GNU/Linux"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.mips.cpu");
   tdesc_create_reg (feature, "r0", 0, 1, NULL, 32, "int");
   tdesc_create_reg (feature, "r1", 1, 1, NULL, 32, "int");
index c990119026bed32f579f0fe2f7a9c3ba449081d2..c9ad3ca7ebaa27d928c3d28135c804d97865abbe 100644 (file)
@@ -10,12 +10,12 @@ static void
 initialize_tdesc_mips_linux (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-
   set_tdesc_architecture (result, bfd_scan_arch ("mips"));
 
   set_tdesc_osabi (result, osabi_from_tdesc_string ("GNU/Linux"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.mips.cpu");
   tdesc_create_reg (feature, "r0", 0, 1, NULL, 32, "int");
   tdesc_create_reg (feature, "r1", 1, 1, NULL, 32, "int");
index bc09078443951481048d17d47d3d2288f31f21fa..05317b70f4fe2c0cf1186c6c1ba8b895ae3e9da5 100644 (file)
@@ -10,10 +10,10 @@ static void
 initialize_tdesc_mips64_dsp_linux (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-
   set_tdesc_architecture (result, bfd_scan_arch ("mips"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.mips.cpu");
   tdesc_create_reg (feature, "r0", 0, 1, NULL, 64, "int");
   tdesc_create_reg (feature, "r1", 1, 1, NULL, 64, "int");
index 2ecda9ba3ad24e46a82a9b2b80ce7fa453cc5a9f..4814152c4306a7ca30bbe9830d10417258e7ceaa 100644 (file)
@@ -10,10 +10,10 @@ static void
 initialize_tdesc_mips64_linux (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-
   set_tdesc_architecture (result, bfd_scan_arch ("mips"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.mips.cpu");
   tdesc_create_reg (feature, "r0", 0, 1, NULL, 64, "int");
   tdesc_create_reg (feature, "r1", 1, 1, NULL, 64, "int");
index 21f63f5ac99197c49ed62c76e760482b57c3361d..89b246b8ce0186a576e795890451025767109c01 100644 (file)
@@ -10,10 +10,10 @@ static void
 initialize_tdesc_nds32 (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-
   set_tdesc_architecture (result, bfd_scan_arch ("n1h"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.nds32.core");
   tdesc_create_reg (feature, "r0", 0, 1, NULL, 32, "int");
   tdesc_create_reg (feature, "r1", 1, 1, NULL, 32, "int");
index 3288f79d0b754e7e10d424a3e6305f7a89c4408a..03685676b5ed4000552fa92387226ebf469c70b1 100644 (file)
@@ -10,12 +10,12 @@ static void
 initialize_tdesc_nios2_linux (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-
   set_tdesc_architecture (result, bfd_scan_arch ("nios2"));
 
   set_tdesc_osabi (result, osabi_from_tdesc_string ("GNU/Linux"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.nios2.cpu");
   tdesc_create_reg (feature, "zero", 0, 1, NULL, 32, "uint32");
   tdesc_create_reg (feature, "at", 1, 1, NULL, 32, "uint32");
index 0cedc129c266527b5cddc99cf46194c0ac225d97..705f499e65b0c3a82dfb44655b6f5d55c0ae5224 100644 (file)
@@ -10,10 +10,10 @@ static void
 initialize_tdesc_nios2 (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-
   set_tdesc_architecture (result, bfd_scan_arch ("nios2"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.nios2.cpu");
   tdesc_create_reg (feature, "zero", 0, 1, NULL, 32, "uint32");
   tdesc_create_reg (feature, "at", 1, 1, NULL, 32, "uint32");
index 5ee5d9cce21a94600cf04dc8632b5edb70a83bf6..39f5b14bb434e477e79f8c0034da87f4bba85111 100644 (file)
@@ -10,10 +10,10 @@ static void
 initialize_tdesc_powerpc_32 (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-
   set_tdesc_architecture (result, bfd_scan_arch ("powerpc:common"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.power.core");
   tdesc_create_reg (feature, "r0", 0, 1, NULL, 32, "uint32");
   tdesc_create_reg (feature, "r1", 1, 1, NULL, 32, "uint32");
index 971fd4b35f3fe4411a0ac64a8bbf22a86bb12429..8089c0434eea237b59cb151dda05d2590435030c 100644 (file)
@@ -10,10 +10,10 @@ static void
 initialize_tdesc_powerpc_32l (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-
   set_tdesc_architecture (result, bfd_scan_arch ("powerpc:common"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.power.core");
   tdesc_create_reg (feature, "r0", 0, 1, NULL, 32, "uint32");
   tdesc_create_reg (feature, "r1", 1, 1, NULL, 32, "uint32");
index 160d1228825c69737202ac822143c05a44b0e834..a9760a37d95d117ead29ba0c9c708fc1499fa588 100644 (file)
@@ -10,10 +10,10 @@ static void
 initialize_tdesc_powerpc_64 (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-
   set_tdesc_architecture (result, bfd_scan_arch ("powerpc:common64"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.power.core");
   tdesc_create_reg (feature, "r0", 0, 1, NULL, 64, "uint64");
   tdesc_create_reg (feature, "r1", 1, 1, NULL, 64, "uint64");
index 16a766eab7e856b1240ea889bdfd37c425a63894..408794e13a07bb4024965f1330653f8f04a19bea 100644 (file)
@@ -10,10 +10,10 @@ static void
 initialize_tdesc_powerpc_64l (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-
   set_tdesc_architecture (result, bfd_scan_arch ("powerpc:common64"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.power.core");
   tdesc_create_reg (feature, "r0", 0, 1, NULL, 64, "uint64");
   tdesc_create_reg (feature, "r1", 1, 1, NULL, 64, "uint64");
index 69d20c43027eacac3ed2e124c3d54cc2deccbd6d..32b6995fd0e8bc6a69dccac0a2b3f7226b1f6774 100644 (file)
@@ -11,8 +11,6 @@ initialize_tdesc_powerpc_7400 (void)
 {
   struct target_desc *result = allocate_target_description ();
   struct tdesc_feature *feature;
-  struct tdesc_type *field_type;
-  struct tdesc_type *type;
 
   feature = tdesc_create_feature (result, "org.gnu.gdb.power.core");
   tdesc_create_reg (feature, "r0", 0, 1, NULL, 32, "uint32");
@@ -140,6 +138,7 @@ 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);
 
@@ -152,6 +151,7 @@ initialize_tdesc_powerpc_7400 (void)
   field_type = tdesc_named_type (feature, "int8");
   tdesc_create_vector (feature, "v16i8", field_type, 16);
 
+  struct tdesc_type *type;
   type = tdesc_create_union (feature, "vec128");
   field_type = tdesc_named_type (feature, "uint128");
   tdesc_add_field (type, "uint128", field_type);
index 285e87da0d553c23d49a84a7420b2ef0e6e9e310..e97132ec750ee6bb6d47d66b3312cc586e2fbfd5 100644 (file)
@@ -10,12 +10,10 @@ static void
 initialize_tdesc_powerpc_altivec32 (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-  struct tdesc_type *field_type;
-  struct tdesc_type *type;
-
   set_tdesc_architecture (result, bfd_scan_arch ("powerpc:common"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.power.core");
   tdesc_create_reg (feature, "r0", 0, 1, NULL, 32, "uint32");
   tdesc_create_reg (feature, "r1", 1, 1, NULL, 32, "uint32");
@@ -92,6 +90,7 @@ 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);
 
@@ -104,6 +103,7 @@ initialize_tdesc_powerpc_altivec32 (void)
   field_type = tdesc_named_type (feature, "int8");
   tdesc_create_vector (feature, "v16i8", field_type, 16);
 
+  struct tdesc_type *type;
   type = tdesc_create_union (feature, "vec128");
   field_type = tdesc_named_type (feature, "uint128");
   tdesc_add_field (type, "uint128", field_type);
index 447ed47a458349c61c3b377530225044ebcc1c3e..a9445d96d0105aa02b09e9b6b97cf437365fbc18 100644 (file)
@@ -10,12 +10,10 @@ static void
 initialize_tdesc_powerpc_altivec32l (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-  struct tdesc_type *field_type;
-  struct tdesc_type *type;
-
   set_tdesc_architecture (result, bfd_scan_arch ("powerpc:common"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.power.core");
   tdesc_create_reg (feature, "r0", 0, 1, NULL, 32, "uint32");
   tdesc_create_reg (feature, "r1", 1, 1, NULL, 32, "uint32");
@@ -96,6 +94,7 @@ 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);
 
@@ -108,6 +107,7 @@ initialize_tdesc_powerpc_altivec32l (void)
   field_type = tdesc_named_type (feature, "int8");
   tdesc_create_vector (feature, "v16i8", field_type, 16);
 
+  struct tdesc_type *type;
   type = tdesc_create_union (feature, "vec128");
   field_type = tdesc_named_type (feature, "uint128");
   tdesc_add_field (type, "uint128", field_type);
index 1e9a61d90c3fc68ae29d1839c93287897eb36bd1..3b626a94419cc7284ad52a9567b29f784ec9c868 100644 (file)
@@ -10,12 +10,10 @@ static void
 initialize_tdesc_powerpc_altivec64 (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-  struct tdesc_type *field_type;
-  struct tdesc_type *type;
-
   set_tdesc_architecture (result, bfd_scan_arch ("powerpc:common64"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.power.core");
   tdesc_create_reg (feature, "r0", 0, 1, NULL, 64, "uint64");
   tdesc_create_reg (feature, "r1", 1, 1, NULL, 64, "uint64");
@@ -92,6 +90,7 @@ 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);
 
@@ -104,6 +103,7 @@ initialize_tdesc_powerpc_altivec64 (void)
   field_type = tdesc_named_type (feature, "int8");
   tdesc_create_vector (feature, "v16i8", field_type, 16);
 
+  struct tdesc_type *type;
   type = tdesc_create_union (feature, "vec128");
   field_type = tdesc_named_type (feature, "uint128");
   tdesc_add_field (type, "uint128", field_type);
index 10ecd8a1cf18e49c3f941984dc2ea8a2cfd4a983..cca535377227c140003dc7a1284a9ee3cb423099 100644 (file)
@@ -10,12 +10,10 @@ static void
 initialize_tdesc_powerpc_altivec64l (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-  struct tdesc_type *field_type;
-  struct tdesc_type *type;
-
   set_tdesc_architecture (result, bfd_scan_arch ("powerpc:common64"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.power.core");
   tdesc_create_reg (feature, "r0", 0, 1, NULL, 64, "uint64");
   tdesc_create_reg (feature, "r1", 1, 1, NULL, 64, "uint64");
@@ -96,6 +94,7 @@ 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);
 
@@ -108,6 +107,7 @@ initialize_tdesc_powerpc_altivec64l (void)
   field_type = tdesc_named_type (feature, "int8");
   tdesc_create_vector (feature, "v16i8", field_type, 16);
 
+  struct tdesc_type *type;
   type = tdesc_create_union (feature, "vec128");
   field_type = tdesc_named_type (feature, "uint128");
   tdesc_add_field (type, "uint128", field_type);
index 7d33dc25b272dd1b9d44e13b13b65e9f48ce68fd..c615b8d8d63b164c0542087353c591cd3e51883e 100644 (file)
@@ -10,14 +10,12 @@ static void
 initialize_tdesc_powerpc_cell32l (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-  struct tdesc_type *field_type;
-  struct tdesc_type *type;
-
   set_tdesc_architecture (result, bfd_scan_arch ("powerpc:common"));
 
   tdesc_add_compatible (result, bfd_scan_arch ("spu:256K"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.power.core");
   tdesc_create_reg (feature, "r0", 0, 1, NULL, 32, "uint32");
   tdesc_create_reg (feature, "r1", 1, 1, NULL, 32, "uint32");
@@ -98,6 +96,7 @@ 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);
 
@@ -110,6 +109,7 @@ initialize_tdesc_powerpc_cell32l (void)
   field_type = tdesc_named_type (feature, "int8");
   tdesc_create_vector (feature, "v16i8", field_type, 16);
 
+  struct tdesc_type *type;
   type = tdesc_create_union (feature, "vec128");
   field_type = tdesc_named_type (feature, "uint128");
   tdesc_add_field (type, "uint128", field_type);
index 6054c26b07f540838335845d7ae94bd3e064be77..5040e5e929ee3f4809c3835babc74cc81c542386 100644 (file)
@@ -10,14 +10,12 @@ static void
 initialize_tdesc_powerpc_cell64l (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-  struct tdesc_type *field_type;
-  struct tdesc_type *type;
-
   set_tdesc_architecture (result, bfd_scan_arch ("powerpc:common64"));
 
   tdesc_add_compatible (result, bfd_scan_arch ("spu:256K"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.power.core");
   tdesc_create_reg (feature, "r0", 0, 1, NULL, 64, "uint64");
   tdesc_create_reg (feature, "r1", 1, 1, NULL, 64, "uint64");
@@ -98,6 +96,7 @@ 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);
 
@@ -110,6 +109,7 @@ initialize_tdesc_powerpc_cell64l (void)
   field_type = tdesc_named_type (feature, "int8");
   tdesc_create_vector (feature, "v16i8", field_type, 16);
 
+  struct tdesc_type *type;
   type = tdesc_create_union (feature, "vec128");
   field_type = tdesc_named_type (feature, "uint128");
   tdesc_add_field (type, "uint128", field_type);
index aaca3a71a3d4e515903d635cdabf8d3a2b582b0b..4466bc79a9b64fdc9c38a23b91caea3f6758ad4d 100644 (file)
@@ -10,10 +10,10 @@ static void
 initialize_tdesc_powerpc_e500 (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-
   set_tdesc_architecture (result, bfd_scan_arch ("powerpc:e500"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.power.core");
   tdesc_create_reg (feature, "r0", 0, 1, NULL, 32, "uint32");
   tdesc_create_reg (feature, "r1", 1, 1, NULL, 32, "uint32");
index de038620bad49f1cd51e3a641df63f1b3569f596..61acbf3dd31493c2c26fcd34fd8227628b23f5f9 100644 (file)
@@ -10,10 +10,10 @@ static void
 initialize_tdesc_powerpc_e500l (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-
   set_tdesc_architecture (result, bfd_scan_arch ("powerpc:e500"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.power.core");
   tdesc_create_reg (feature, "r0", 0, 1, NULL, 32, "uint32");
   tdesc_create_reg (feature, "r1", 1, 1, NULL, 32, "uint32");
index 1b5bd6d7a32aed3ae685a66aa37f251d2b38212f..de6548fdf7c8ea11a68940af89031fb681d38f5b 100644 (file)
@@ -10,10 +10,10 @@ static void
 initialize_tdesc_powerpc_isa205_32l (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-
   set_tdesc_architecture (result, bfd_scan_arch ("powerpc:common"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.power.core");
   tdesc_create_reg (feature, "r0", 0, 1, NULL, 32, "uint32");
   tdesc_create_reg (feature, "r1", 1, 1, NULL, 32, "uint32");
index 31bfc87a993ec74faaabf3282ade09307f8c0aa3..cd3b2c10a6ccf3b7a72065fd469317f9f5ac9e2b 100644 (file)
@@ -10,10 +10,10 @@ static void
 initialize_tdesc_powerpc_isa205_64l (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-
   set_tdesc_architecture (result, bfd_scan_arch ("powerpc:common64"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.power.core");
   tdesc_create_reg (feature, "r0", 0, 1, NULL, 64, "uint64");
   tdesc_create_reg (feature, "r1", 1, 1, NULL, 64, "uint64");
index 6c216cec7f6f1c2d875effe404ad7fdb3f6728da..943d02db469a4c27621249a965b3c9e9ec871acc 100644 (file)
@@ -10,12 +10,10 @@ static void
 initialize_tdesc_powerpc_isa205_altivec32l (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-  struct tdesc_type *field_type;
-  struct tdesc_type *type;
-
   set_tdesc_architecture (result, bfd_scan_arch ("powerpc:common"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.power.core");
   tdesc_create_reg (feature, "r0", 0, 1, NULL, 32, "uint32");
   tdesc_create_reg (feature, "r1", 1, 1, NULL, 32, "uint32");
@@ -96,6 +94,7 @@ 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);
 
@@ -108,6 +107,7 @@ initialize_tdesc_powerpc_isa205_altivec32l (void)
   field_type = tdesc_named_type (feature, "int8");
   tdesc_create_vector (feature, "v16i8", field_type, 16);
 
+  struct tdesc_type *type;
   type = tdesc_create_union (feature, "vec128");
   field_type = tdesc_named_type (feature, "uint128");
   tdesc_add_field (type, "uint128", field_type);
index 2c206aa618ed0fa71e03d47ff211635fbc9f73ef..d454bac1b853de9cf79296fed1cc518e596421e5 100644 (file)
@@ -10,12 +10,10 @@ static void
 initialize_tdesc_powerpc_isa205_altivec64l (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-  struct tdesc_type *field_type;
-  struct tdesc_type *type;
-
   set_tdesc_architecture (result, bfd_scan_arch ("powerpc:common64"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.power.core");
   tdesc_create_reg (feature, "r0", 0, 1, NULL, 64, "uint64");
   tdesc_create_reg (feature, "r1", 1, 1, NULL, 64, "uint64");
@@ -96,6 +94,7 @@ 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);
 
@@ -108,6 +107,7 @@ initialize_tdesc_powerpc_isa205_altivec64l (void)
   field_type = tdesc_named_type (feature, "int8");
   tdesc_create_vector (feature, "v16i8", field_type, 16);
 
+  struct tdesc_type *type;
   type = tdesc_create_union (feature, "vec128");
   field_type = tdesc_named_type (feature, "uint128");
   tdesc_add_field (type, "uint128", field_type);
index 4659ce142c8221222af5fe7050f80053e32cae32..09fd5cee29d9f98d27f0c14fef50bb4ff65ff8be 100644 (file)
@@ -10,12 +10,10 @@ static void
 initialize_tdesc_powerpc_isa205_vsx32l (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-  struct tdesc_type *field_type;
-  struct tdesc_type *type;
-
   set_tdesc_architecture (result, bfd_scan_arch ("powerpc:common"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.power.core");
   tdesc_create_reg (feature, "r0", 0, 1, NULL, 32, "uint32");
   tdesc_create_reg (feature, "r1", 1, 1, NULL, 32, "uint32");
@@ -96,6 +94,7 @@ 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);
 
@@ -108,6 +107,7 @@ initialize_tdesc_powerpc_isa205_vsx32l (void)
   field_type = tdesc_named_type (feature, "int8");
   tdesc_create_vector (feature, "v16i8", field_type, 16);
 
+  struct tdesc_type *type;
   type = tdesc_create_union (feature, "vec128");
   field_type = tdesc_named_type (feature, "uint128");
   tdesc_add_field (type, "uint128", field_type);
index 64b12b99faff11a5ae9f41f58e3ccff17f3f686a..d295ab77260e7b6e45107e148ddf4270f6583eee 100644 (file)
@@ -10,12 +10,10 @@ static void
 initialize_tdesc_powerpc_isa205_vsx64l (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-  struct tdesc_type *field_type;
-  struct tdesc_type *type;
-
   set_tdesc_architecture (result, bfd_scan_arch ("powerpc:common64"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.power.core");
   tdesc_create_reg (feature, "r0", 0, 1, NULL, 64, "uint64");
   tdesc_create_reg (feature, "r1", 1, 1, NULL, 64, "uint64");
@@ -96,6 +94,7 @@ 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);
 
@@ -108,6 +107,7 @@ initialize_tdesc_powerpc_isa205_vsx64l (void)
   field_type = tdesc_named_type (feature, "int8");
   tdesc_create_vector (feature, "v16i8", field_type, 16);
 
+  struct tdesc_type *type;
   type = tdesc_create_union (feature, "vec128");
   field_type = tdesc_named_type (feature, "uint128");
   tdesc_add_field (type, "uint128", field_type);
index ba1fcb6edefdf3eebc641df803ff0b6cd01e1e2d..8cf75624680216837ebe9e48e6ae659c7b8a2e7e 100644 (file)
@@ -10,12 +10,10 @@ static void
 initialize_tdesc_powerpc_vsx32 (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-  struct tdesc_type *field_type;
-  struct tdesc_type *type;
-
   set_tdesc_architecture (result, bfd_scan_arch ("powerpc:common"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.power.core");
   tdesc_create_reg (feature, "r0", 0, 1, NULL, 32, "uint32");
   tdesc_create_reg (feature, "r1", 1, 1, NULL, 32, "uint32");
@@ -92,6 +90,7 @@ 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);
 
@@ -104,6 +103,7 @@ initialize_tdesc_powerpc_vsx32 (void)
   field_type = tdesc_named_type (feature, "int8");
   tdesc_create_vector (feature, "v16i8", field_type, 16);
 
+  struct tdesc_type *type;
   type = tdesc_create_union (feature, "vec128");
   field_type = tdesc_named_type (feature, "uint128");
   tdesc_add_field (type, "uint128", field_type);
index 013e3920d727e9a041d096ea8283f4db300df095..e8c188155327572880248053be66cf5975b52e4f 100644 (file)
@@ -10,12 +10,10 @@ static void
 initialize_tdesc_powerpc_vsx32l (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-  struct tdesc_type *field_type;
-  struct tdesc_type *type;
-
   set_tdesc_architecture (result, bfd_scan_arch ("powerpc:common"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.power.core");
   tdesc_create_reg (feature, "r0", 0, 1, NULL, 32, "uint32");
   tdesc_create_reg (feature, "r1", 1, 1, NULL, 32, "uint32");
@@ -96,6 +94,7 @@ 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);
 
@@ -108,6 +107,7 @@ initialize_tdesc_powerpc_vsx32l (void)
   field_type = tdesc_named_type (feature, "int8");
   tdesc_create_vector (feature, "v16i8", field_type, 16);
 
+  struct tdesc_type *type;
   type = tdesc_create_union (feature, "vec128");
   field_type = tdesc_named_type (feature, "uint128");
   tdesc_add_field (type, "uint128", field_type);
index ca0232386b8bc5ca39c52d2805e87f5569305751..30953c539c1db73ee5e9dd2cef4386b47cf5b0b1 100644 (file)
@@ -10,12 +10,10 @@ static void
 initialize_tdesc_powerpc_vsx64 (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-  struct tdesc_type *field_type;
-  struct tdesc_type *type;
-
   set_tdesc_architecture (result, bfd_scan_arch ("powerpc:common64"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.power.core");
   tdesc_create_reg (feature, "r0", 0, 1, NULL, 64, "uint64");
   tdesc_create_reg (feature, "r1", 1, 1, NULL, 64, "uint64");
@@ -92,6 +90,7 @@ 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);
 
@@ -104,6 +103,7 @@ initialize_tdesc_powerpc_vsx64 (void)
   field_type = tdesc_named_type (feature, "int8");
   tdesc_create_vector (feature, "v16i8", field_type, 16);
 
+  struct tdesc_type *type;
   type = tdesc_create_union (feature, "vec128");
   field_type = tdesc_named_type (feature, "uint128");
   tdesc_add_field (type, "uint128", field_type);
index 31bb224a4f2fc352eb66903a3776dc7309806908..5f12650547659518cc174debbef5154a7c6c66e8 100644 (file)
@@ -10,12 +10,10 @@ static void
 initialize_tdesc_powerpc_vsx64l (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-  struct tdesc_type *field_type;
-  struct tdesc_type *type;
-
   set_tdesc_architecture (result, bfd_scan_arch ("powerpc:common64"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.power.core");
   tdesc_create_reg (feature, "r0", 0, 1, NULL, 64, "uint64");
   tdesc_create_reg (feature, "r1", 1, 1, NULL, 64, "uint64");
@@ -96,6 +94,7 @@ 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);
 
@@ -108,6 +107,7 @@ initialize_tdesc_powerpc_vsx64l (void)
   field_type = tdesc_named_type (feature, "int8");
   tdesc_create_vector (feature, "v16i8", field_type, 16);
 
+  struct tdesc_type *type;
   type = tdesc_create_union (feature, "vec128");
   field_type = tdesc_named_type (feature, "uint128");
   tdesc_add_field (type, "uint128", field_type);
index d4e93a5c28a383d2e3ff84d39c38cc20613b872d..709b5da405d54818c837a2ec090b644537f8bc78 100644 (file)
@@ -10,10 +10,10 @@ static void
 initialize_tdesc_rs6000 (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-
   set_tdesc_architecture (result, bfd_scan_arch ("rs6000:6000"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.power.core");
   tdesc_create_reg (feature, "r0", 0, 1, NULL, 32, "int");
   tdesc_create_reg (feature, "r1", 1, 1, NULL, 32, "int");
index 6d1309469dbe43031cb1730d3f18c0b08f469e3b..01c136c933e7bd33c280e3944dda1cedd6d8c019 100644 (file)
@@ -10,10 +10,10 @@ static void
 initialize_tdesc_s390_linux32 (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-
   set_tdesc_architecture (result, bfd_scan_arch ("s390:31-bit"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.s390.core");
   tdesc_create_reg (feature, "pswm", 0, 1, "psw", 32, "uint32");
   tdesc_create_reg (feature, "pswa", 1, 1, "psw", 32, "uint32");
index f773fc1a1012fb0686a260de3c70c9740ae5897c..65a4a504d334169bf756090b29b33b4fae992663 100644 (file)
@@ -10,10 +10,10 @@ static void
 initialize_tdesc_s390_linux32v1 (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-
   set_tdesc_architecture (result, bfd_scan_arch ("s390:31-bit"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.s390.core");
   tdesc_create_reg (feature, "pswm", 0, 1, "psw", 32, "uint32");
   tdesc_create_reg (feature, "pswa", 1, 1, "psw", 32, "uint32");
index 23177525b0f60c9e3e4fdf3789b373d84c649373..b5d25ec75bf70b786a98ca2c673919a068791c41 100644 (file)
@@ -10,10 +10,10 @@ static void
 initialize_tdesc_s390_linux32v2 (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-
   set_tdesc_architecture (result, bfd_scan_arch ("s390:31-bit"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.s390.core");
   tdesc_create_reg (feature, "pswm", 0, 1, "psw", 32, "uint32");
   tdesc_create_reg (feature, "pswa", 1, 1, "psw", 32, "uint32");
index 3c7145bcb7b3501010cfd8779142bbe4cdbca974..531d3a1ca8223a3cd407ff01e96fac50ad03138c 100644 (file)
@@ -10,10 +10,10 @@ static void
 initialize_tdesc_s390_linux64 (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-
   set_tdesc_architecture (result, bfd_scan_arch ("s390:31-bit"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.s390.core");
   tdesc_create_reg (feature, "pswm", 0, 1, "psw", 32, "uint32");
   tdesc_create_reg (feature, "pswa", 1, 1, "psw", 32, "uint32");
index 72bd8945f842fe61f417cca460593db3f3d14d05..d75deca23fa592880db3f32dfea1972f6e780b6b 100644 (file)
@@ -10,10 +10,10 @@ static void
 initialize_tdesc_s390_linux64v1 (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-
   set_tdesc_architecture (result, bfd_scan_arch ("s390:31-bit"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.s390.core");
   tdesc_create_reg (feature, "pswm", 0, 1, "psw", 32, "uint32");
   tdesc_create_reg (feature, "pswa", 1, 1, "psw", 32, "uint32");
index a1757da2ac768249aeb49c8b11888adaeaad8fb0..bd10ee8ffe3276716951ee91d4ec7966b5358fdc 100644 (file)
@@ -10,10 +10,10 @@ static void
 initialize_tdesc_s390_linux64v2 (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-
   set_tdesc_architecture (result, bfd_scan_arch ("s390:31-bit"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.s390.core");
   tdesc_create_reg (feature, "pswm", 0, 1, "psw", 32, "uint32");
   tdesc_create_reg (feature, "pswa", 1, 1, "psw", 32, "uint32");
index 0a3aedf689a35b3c31e773c53c9998b128a38483..fe2020ac65a69cc690d657fcfeab6556326444d5 100644 (file)
@@ -10,10 +10,10 @@ static void
 initialize_tdesc_s390_te_linux64 (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-
   set_tdesc_architecture (result, bfd_scan_arch ("s390:31-bit"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.s390.core");
   tdesc_create_reg (feature, "pswm", 0, 1, "psw", 32, "uint32");
   tdesc_create_reg (feature, "pswa", 1, 1, "psw", 32, "uint32");
index 5bc3eecd7c3e5f8bbc71dadab8722847a08e9971..d9b18d385071219ba4d889ff1b4a26807de19edc 100644 (file)
@@ -10,12 +10,10 @@ static void
 initialize_tdesc_s390_tevx_linux64 (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-  struct tdesc_type *field_type;
-  struct tdesc_type *type;
-
   set_tdesc_architecture (result, bfd_scan_arch ("s390:31-bit"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.s390.core");
   tdesc_create_reg (feature, "pswm", 0, 1, "psw", 32, "uint32");
   tdesc_create_reg (feature, "pswa", 1, 1, "psw", 32, "uint32");
@@ -117,6 +115,7 @@ 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);
 
@@ -135,6 +134,7 @@ initialize_tdesc_s390_tevx_linux64 (void)
   field_type = tdesc_named_type (feature, "int64");
   tdesc_create_vector (feature, "v2i64", field_type, 2);
 
+  struct tdesc_type *type;
   type = tdesc_create_union (feature, "vec128");
   field_type = tdesc_named_type (feature, "v4f");
   tdesc_add_field (type, "v4_float", field_type);
index c3ffa1676374d97ecd18ee2c5f9843eb547e52e9..b2138dd90a5068f36dac96955a915d39e924ecc3 100644 (file)
@@ -10,12 +10,10 @@ static void
 initialize_tdesc_s390_vx_linux64 (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-  struct tdesc_type *field_type;
-  struct tdesc_type *type;
-
   set_tdesc_architecture (result, bfd_scan_arch ("s390:31-bit"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.s390.core");
   tdesc_create_reg (feature, "pswm", 0, 1, "psw", 32, "uint32");
   tdesc_create_reg (feature, "pswa", 1, 1, "psw", 32, "uint32");
@@ -95,6 +93,7 @@ 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);
 
@@ -113,6 +112,7 @@ initialize_tdesc_s390_vx_linux64 (void)
   field_type = tdesc_named_type (feature, "int64");
   tdesc_create_vector (feature, "v2i64", field_type, 2);
 
+  struct tdesc_type *type;
   type = tdesc_create_union (feature, "vec128");
   field_type = tdesc_named_type (feature, "v4f");
   tdesc_add_field (type, "v4_float", field_type);
index 04502c659f64cbb1fa53c96cbb55ff1da91e0074..9d48ea332bdafa65b0ca378cc0b4f8bc5964f2a9 100644 (file)
@@ -10,10 +10,10 @@ static void
 initialize_tdesc_s390x_linux64 (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-
   set_tdesc_architecture (result, bfd_scan_arch ("s390:64-bit"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.s390.core");
   tdesc_create_reg (feature, "pswm", 0, 1, "psw", 64, "uint64");
   tdesc_create_reg (feature, "pswa", 1, 1, "psw", 64, "uint64");
index 05bfd53a611fd80dd068e3572a195a47390a0bc0..b95f1c4ccc29c4f1d54abc919d033f4cb84c5aed 100644 (file)
@@ -10,10 +10,10 @@ static void
 initialize_tdesc_s390x_linux64v1 (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-
   set_tdesc_architecture (result, bfd_scan_arch ("s390:64-bit"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.s390.core");
   tdesc_create_reg (feature, "pswm", 0, 1, "psw", 64, "uint64");
   tdesc_create_reg (feature, "pswa", 1, 1, "psw", 64, "uint64");
index 4108cc06bbbf5e44627ca748593ee0a85470c2d4..9aab89f458c64a39e794d0be4fe6dc2db32a4b80 100644 (file)
@@ -10,10 +10,10 @@ static void
 initialize_tdesc_s390x_linux64v2 (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-
   set_tdesc_architecture (result, bfd_scan_arch ("s390:64-bit"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.s390.core");
   tdesc_create_reg (feature, "pswm", 0, 1, "psw", 64, "uint64");
   tdesc_create_reg (feature, "pswa", 1, 1, "psw", 64, "uint64");
index f75d9007c62508818a75e7220bcb041e80b67d11..babd3bdb03de0905c2d50537a3467cb07b80bd3c 100644 (file)
@@ -10,10 +10,10 @@ static void
 initialize_tdesc_s390x_te_linux64 (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-
   set_tdesc_architecture (result, bfd_scan_arch ("s390:64-bit"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.s390.core");
   tdesc_create_reg (feature, "pswm", 0, 1, "psw", 64, "uint64");
   tdesc_create_reg (feature, "pswa", 1, 1, "psw", 64, "uint64");
index 327cd230ef54c84a3b1fc05093779b1a9c4bb2f6..02afd3a5c2802c51f6bf0f376a97879e47134ed8 100644 (file)
@@ -10,12 +10,10 @@ static void
 initialize_tdesc_s390x_tevx_linux64 (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-  struct tdesc_type *field_type;
-  struct tdesc_type *type;
-
   set_tdesc_architecture (result, bfd_scan_arch ("s390:64-bit"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.s390.core");
   tdesc_create_reg (feature, "pswm", 0, 1, "psw", 64, "uint64");
   tdesc_create_reg (feature, "pswa", 1, 1, "psw", 64, "uint64");
@@ -101,6 +99,7 @@ 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);
 
@@ -119,6 +118,7 @@ initialize_tdesc_s390x_tevx_linux64 (void)
   field_type = tdesc_named_type (feature, "int64");
   tdesc_create_vector (feature, "v2i64", field_type, 2);
 
+  struct tdesc_type *type;
   type = tdesc_create_union (feature, "vec128");
   field_type = tdesc_named_type (feature, "v4f");
   tdesc_add_field (type, "v4_float", field_type);
index e66da70adce75a6b2e3a556b866a6e7985b9319e..120db53a3322be69d837d685bcbf7b6f48c608dc 100644 (file)
@@ -10,12 +10,10 @@ static void
 initialize_tdesc_s390x_vx_linux64 (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-  struct tdesc_type *field_type;
-  struct tdesc_type *type;
-
   set_tdesc_architecture (result, bfd_scan_arch ("s390:64-bit"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.s390.core");
   tdesc_create_reg (feature, "pswm", 0, 1, "psw", 64, "uint64");
   tdesc_create_reg (feature, "pswa", 1, 1, "psw", 64, "uint64");
@@ -79,6 +77,7 @@ 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);
 
@@ -97,6 +96,7 @@ initialize_tdesc_s390x_vx_linux64 (void)
   field_type = tdesc_named_type (feature, "int64");
   tdesc_create_vector (feature, "v2i64", field_type, 2);
 
+  struct tdesc_type *type;
   type = tdesc_create_union (feature, "vec128");
   field_type = tdesc_named_type (feature, "v4f");
   tdesc_add_field (type, "v4_float", field_type);
index 8dd426d85b16028f9e7af12ba4cf15200c776521..86b905d4e39a5bf8e90fdff19e872cd4e617213c 100644 (file)
@@ -10,12 +10,12 @@ static void
 initialize_tdesc_tic6x_c62x_linux (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-
   set_tdesc_architecture (result, bfd_scan_arch ("tic6x"));
 
   set_tdesc_osabi (result, osabi_from_tdesc_string ("GNU/Linux"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.tic6x.core");
   tdesc_create_reg (feature, "A0", 0, 1, NULL, 32, "uint32");
   tdesc_create_reg (feature, "A1", 1, 1, NULL, 32, "uint32");
index 2089aafeab088d43c3bda2f6e26eb27e15d6b83c..7dbf6150744654947b39a3e0d6bfe25938f9db75 100644 (file)
@@ -10,10 +10,10 @@ static void
 initialize_tdesc_tic6x_c62x (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-
   set_tdesc_architecture (result, bfd_scan_arch ("tic6x"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.tic6x.core");
   tdesc_create_reg (feature, "A0", 0, 1, NULL, 32, "uint32");
   tdesc_create_reg (feature, "A1", 1, 1, NULL, 32, "uint32");
index 27523580211edd6d586309eb7d2419b3ce838fe2..b52048f73696c3979648acc396dae003515b1681 100644 (file)
@@ -10,12 +10,12 @@ static void
 initialize_tdesc_tic6x_c64x_linux (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-
   set_tdesc_architecture (result, bfd_scan_arch ("tic6x"));
 
   set_tdesc_osabi (result, osabi_from_tdesc_string ("GNU/Linux"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.tic6x.core");
   tdesc_create_reg (feature, "A0", 0, 1, NULL, 32, "uint32");
   tdesc_create_reg (feature, "A1", 1, 1, NULL, 32, "uint32");
index 0feda242f80b6d6b52242eba31188fa9602a5dac..618f802c19c97a000cbf61de03b09074980af8d7 100644 (file)
@@ -10,10 +10,10 @@ static void
 initialize_tdesc_tic6x_c64x (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-
   set_tdesc_architecture (result, bfd_scan_arch ("tic6x"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.tic6x.core");
   tdesc_create_reg (feature, "A0", 0, 1, NULL, 32, "uint32");
   tdesc_create_reg (feature, "A1", 1, 1, NULL, 32, "uint32");
index c1bee4ce143f82d6b5b347e3fd345e81debd42d1..ca8c505d335cf4e501f730b8a5d08c80b2c4c36c 100644 (file)
@@ -10,12 +10,12 @@ static void
 initialize_tdesc_tic6x_c64xp_linux (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-
   set_tdesc_architecture (result, bfd_scan_arch ("tic6x"));
 
   set_tdesc_osabi (result, osabi_from_tdesc_string ("GNU/Linux"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.tic6x.core");
   tdesc_create_reg (feature, "A0", 0, 1, NULL, 32, "uint32");
   tdesc_create_reg (feature, "A1", 1, 1, NULL, 32, "uint32");
index 160b854ccfa2ab1751008345b22d1eb084c9acee..4ca51257c00820d231ec3e7db3ac0fa50686efbd 100644 (file)
@@ -10,10 +10,10 @@ static void
 initialize_tdesc_tic6x_c64xp (void)
 {
   struct target_desc *result = allocate_target_description ();
-  struct tdesc_feature *feature;
-
   set_tdesc_architecture (result, bfd_scan_arch ("tic6x"));
 
+  struct tdesc_feature *feature;
+
   feature = tdesc_create_feature (result, "org.gnu.gdb.tic6x.core");
   tdesc_create_reg (feature, "A0", 0, 1, NULL, 32, "uint32");
   tdesc_create_reg (feature, "A1", 1, 1, NULL, 32, "uint32");
index 4129486cd1ed3b251706dc9899d567419f62f42f..46a8ecc238b5ef0f3d7ac30bceb09f49d530fffb 100644 (file)
 #include "hashtab.h"
 #include "inferior.h"
 
+/* The interface to visit different elements of target description.  */
+
+class tdesc_element_visitor
+{
+public:
+  virtual void visit_pre (const target_desc *e) = 0;
+  virtual void visit_post (const target_desc *e) = 0;
+
+  virtual void visit (const tdesc_feature *e) = 0;
+  virtual void visit (const tdesc_type *e) = 0;
+  virtual void visit (const tdesc_reg *e) = 0;
+};
+
+class tdesc_element
+{
+public:
+  virtual void accept (tdesc_element_visitor &v) const = 0;
+};
+
 /* Types.  */
 
 typedef struct property
@@ -46,7 +65,7 @@ DEF_VEC_O(property_s);
 
 /* An individual register from a target description.  */
 
-typedef struct tdesc_reg
+typedef struct tdesc_reg : tdesc_element
 {
   tdesc_reg (struct tdesc_feature *feature, const char *name_,
             int regnum, int save_restore_, const char *group_,
@@ -62,7 +81,7 @@ typedef struct tdesc_reg
     tdesc_type = tdesc_named_type (feature, type);
   }
 
-  ~tdesc_reg ()
+  virtual ~tdesc_reg ()
   {
     xfree (name);
     xfree (type);
@@ -106,6 +125,12 @@ typedef struct tdesc_reg
 
   /* The target-described type corresponding to TYPE, if found.  */
   struct tdesc_type *tdesc_type;
+
+  void accept (tdesc_element_visitor &v) const override
+  {
+    v.visit (this);
+  }
+
 } *tdesc_reg_p;
 DEF_VEC_P(tdesc_reg_p);
 
@@ -151,7 +176,7 @@ enum tdesc_type_kind
   TDESC_TYPE_ENUM
 };
 
-typedef struct tdesc_type
+typedef struct tdesc_type : tdesc_element
 {
   tdesc_type (const char *name_, enum tdesc_type_kind kind_)
     : name (xstrdup (name_)), kind (kind_)
@@ -159,7 +184,7 @@ typedef struct tdesc_type
     memset (&u, 0, sizeof (u));
   }
 
-  ~tdesc_type ()
+  virtual ~tdesc_type ()
   {
     switch (kind)
       {
@@ -214,19 +239,25 @@ typedef struct tdesc_type
       int size;
     } u;
   } u;
+
+  void accept (tdesc_element_visitor &v) const override
+  {
+    v.visit (this);
+  }
+
 } *tdesc_type_p;
 DEF_VEC_P(tdesc_type_p);
 
 /* A feature from a target description.  Each feature is a collection
    of other elements, e.g. registers and types.  */
 
-typedef struct tdesc_feature
+typedef struct tdesc_feature : tdesc_element
 {
   tdesc_feature (const char *name_)
     : name (xstrdup (name_))
   {}
 
-  ~tdesc_feature ()
+  virtual ~tdesc_feature ()
   {
     struct tdesc_reg *reg;
     struct tdesc_type *type;
@@ -256,6 +287,27 @@ typedef struct tdesc_feature
 
   /* The types associated with this feature.  */
   VEC(tdesc_type_p) *types = NULL;
+
+  void accept (tdesc_element_visitor &v) const override
+  {
+    v.visit (this);
+
+    struct tdesc_type *type;
+
+    for (int ix = 0;
+        VEC_iterate (tdesc_type_p, types, ix, type);
+        ix++)
+      type->accept (v);
+
+    struct tdesc_reg *reg;
+
+    for (int ix = 0;
+        VEC_iterate (tdesc_reg_p, registers, ix, reg);
+        ix++)
+      reg->accept (v);
+
+  }
+
 } *tdesc_feature_p;
 DEF_VEC_P(tdesc_feature_p);
 
@@ -265,12 +317,12 @@ DEF_VEC_P(arch_p);
 
 /* A target description.  */
 
-struct target_desc
+struct target_desc : tdesc_element
 {
   target_desc ()
   {}
 
-  ~target_desc ()
+  virtual ~target_desc ()
   {
     struct tdesc_feature *feature;
     struct property *prop;
@@ -312,6 +364,20 @@ struct target_desc
 
   /* The features associated with this target.  */
   VEC(tdesc_feature_p) *features = NULL;
+
+  void accept (tdesc_element_visitor &v) const override
+  {
+    v.visit_pre (this);
+
+    struct tdesc_feature *feature;
+
+    for (int ix = 0;
+        VEC_iterate (tdesc_feature_p, features, ix, feature);
+        ix++)
+      feature->accept (v);
+
+    v.visit_post (this);
+  }
 };
 
 /* Per-architecture data associated with a target description.  The
@@ -1714,20 +1780,270 @@ unset_tdesc_filename_cmd (char *args, int from_tty)
   target_find_description ();
 }
 
+/* Print target description in C.  */
+
+class print_c_tdesc : public tdesc_element_visitor
+{
+public:
+  print_c_tdesc (std::string &filename_after_features)
+    : m_filename_after_features (filename_after_features)
+  {
+    const char *inp;
+    char *outp;
+    const char *filename = lbasename (m_filename_after_features.c_str ());
+
+    m_function = (char *) xmalloc (strlen (filename) + 1);
+    for (inp = filename, outp = m_function; *inp != '\0'; inp++)
+      if (*inp == '.')
+       break;
+      else if (*inp == '-')
+       *outp++ = '_';
+      else
+       *outp++ = *inp;
+    *outp = '\0';
+
+    /* Standard boilerplate.  */
+    printf_unfiltered ("/* THIS FILE IS GENERATED.  "
+                      "-*- buffer-read-only: t -*- vi"
+                      ":set ro:\n");
+    printf_unfiltered ("  Original: %s */\n\n", filename);
+  }
+
+  ~print_c_tdesc ()
+  {
+    xfree (m_function);
+  }
+
+  void visit_pre (const target_desc *e) override
+  {
+    printf_unfiltered ("#include \"defs.h\"\n");
+    printf_unfiltered ("#include \"osabi.h\"\n");
+    printf_unfiltered ("#include \"target-descriptions.h\"\n");
+    printf_unfiltered ("\n");
+
+    printf_unfiltered ("struct target_desc *tdesc_%s;\n", m_function);
+    printf_unfiltered ("static void\n");
+    printf_unfiltered ("initialize_tdesc_%s (void)\n", m_function);
+    printf_unfiltered ("{\n");
+    printf_unfiltered
+      ("  struct target_desc *result = allocate_target_description ();\n");
+
+    if (tdesc_architecture (e) != NULL)
+      {
+       printf_unfiltered
+         ("  set_tdesc_architecture (result, bfd_scan_arch (\"%s\"));\n",
+          tdesc_architecture (e)->printable_name);
+       printf_unfiltered ("\n");
+      }
+    if (tdesc_osabi (e) > GDB_OSABI_UNKNOWN
+       && tdesc_osabi (e) < GDB_OSABI_INVALID)
+      {
+       printf_unfiltered
+         ("  set_tdesc_osabi (result, osabi_from_tdesc_string (\"%s\"));\n",
+          gdbarch_osabi_name (tdesc_osabi (e)));
+       printf_unfiltered ("\n");
+      }
+
+    int ix;
+    const struct bfd_arch_info *compatible;
+    struct property *prop;
+
+    for (ix = 0; VEC_iterate (arch_p, e->compatible, ix, compatible);
+        ix++)
+      {
+       printf_unfiltered
+         ("  tdesc_add_compatible (result, bfd_scan_arch (\"%s\"));\n",
+          compatible->printable_name);
+      }
+
+    if (ix)
+      printf_unfiltered ("\n");
+
+    for (ix = 0; VEC_iterate (property_s, e->properties, ix, prop);
+        ix++)
+      {
+       printf_unfiltered ("  set_tdesc_property (result, \"%s\", \"%s\");\n",
+                          prop->key, prop->value);
+      }
+    printf_unfiltered ("  struct tdesc_feature *feature;\n");
+  }
+
+  void visit (const tdesc_feature *e) override
+  {
+    printf_unfiltered ("\n  feature = tdesc_create_feature (result, \"%s\");\n",
+                      e->name);
+  }
+
+  void visit_post (const target_desc *e) override
+  {
+    printf_unfiltered ("\n  tdesc_%s = result;\n", m_function);
+    printf_unfiltered ("}\n");
+  }
+
+  void visit (const tdesc_type *type) override
+  {
+    struct tdesc_type_field *f;
+
+    /* 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)
+      {
+       printf_unfiltered ("  struct tdesc_type *field_type;\n");
+       m_printed_field_type = true;
+      }
+
+    if ((type->kind == TDESC_TYPE_UNION
+        || type->kind == TDESC_TYPE_STRUCT
+        || type->kind == TDESC_TYPE_FLAGS
+        || type->kind == TDESC_TYPE_ENUM)
+       && VEC_length (tdesc_type_field, type->u.u.fields) > 0
+       && !m_printed_type)
+      {
+       printf_unfiltered ("  struct tdesc_type *type;\n");
+       m_printed_type = true;
+      }
+
+    switch (type->kind)
+      {
+      case TDESC_TYPE_VECTOR:
+       printf_unfiltered
+         ("  field_type = tdesc_named_type (feature, \"%s\");\n",
+          type->u.v.type->name);
+       printf_unfiltered
+         ("  tdesc_create_vector (feature, \"%s\", field_type, %d);\n",
+          type->name, 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->name);
+           if (type->u.u.size != 0)
+             printf_unfiltered
+               ("  tdesc_set_struct_size (type, %d);\n",
+                type->u.u.size);
+         }
+       else
+         {
+           printf_unfiltered
+             ("  type = tdesc_create_flags (feature, \"%s\", %d);\n",
+              type->name, type->u.u.size);
+         }
+       for (int ix3 = 0;
+            VEC_iterate (tdesc_type_field, type->u.u.fields, ix3, f);
+            ix3++)
+         {
+           const char *type_name;
+
+           gdb_assert (f->type != NULL);
+           type_name = f->type->name;
+
+           /* To minimize changes to generated files, don't emit type
+              info for fields that have defaulted types.  */
+           if (f->start != -1)
+             {
+               gdb_assert (f->end != -1);
+               if (f->type->kind == TDESC_TYPE_BOOL)
+                 {
+                   gdb_assert (f->start == f->end);
+                   printf_unfiltered
+                     ("  tdesc_add_flag (type, %d, \"%s\");\n",
+                      f->start, f->name);
+                 }
+               else if ((type->u.u.size == 4
+                         && f->type->kind == TDESC_TYPE_UINT32)
+                        || (type->u.u.size == 8
+                            && f->type->kind == TDESC_TYPE_UINT64))
+                 {
+                   printf_unfiltered
+                     ("  tdesc_add_bitfield (type, \"%s\", %d, %d);\n",
+                      f->name, f->start, f->end);
+                 }
+               else
+                 {
+                   printf_unfiltered
+                     ("  field_type = tdesc_named_type (feature,"
+                      " \"%s\");\n",
+                      type_name);
+                   printf_unfiltered
+                     ("  tdesc_add_typed_bitfield (type, \"%s\","
+                      " %d, %d, field_type);\n",
+                      f->name, f->start, f->end);
+                 }
+             }
+           else /* Not a bitfield.  */
+             {
+               gdb_assert (f->end == -1);
+               gdb_assert (type->kind == TDESC_TYPE_STRUCT);
+               printf_unfiltered
+                 ("  field_type = tdesc_named_type (feature,"
+                  " \"%s\");\n",
+                  type_name);
+               printf_unfiltered
+                 ("  tdesc_add_field (type, \"%s\", field_type);\n",
+                  f->name);
+             }
+         }
+       break;
+      case TDESC_TYPE_UNION:
+       printf_unfiltered
+         ("  type = tdesc_create_union (feature, \"%s\");\n",
+          type->name);
+       for (int ix3 = 0;
+            VEC_iterate (tdesc_type_field, type->u.u.fields, ix3, f);
+            ix3++)
+         {
+           printf_unfiltered
+             ("  field_type = tdesc_named_type (feature, \"%s\");\n",
+              f->type->name);
+           printf_unfiltered
+             ("  tdesc_add_field (type, \"%s\", field_type);\n",
+              f->name);
+         }
+       break;
+      case TDESC_TYPE_ENUM:
+       printf_unfiltered
+         ("  type = tdesc_create_enum (feature, \"%s\", %d);\n",
+          type->name, type->u.u.size);
+       for (int ix3 = 0;
+            VEC_iterate (tdesc_type_field, type->u.u.fields, ix3, f);
+            ix3++)
+         printf_unfiltered
+           ("  tdesc_add_enum_value (type, %d, \"%s\");\n",
+            f->start, f->name);
+       break;
+      default:
+       error (_("C output is not supported type \"%s\"."), type->name);
+      }
+    printf_unfiltered ("\n");
+  }
+
+  void visit (const tdesc_reg *reg) override
+  {
+    printf_unfiltered ("  tdesc_create_reg (feature, \"%s\", %ld, %d, ",
+                      reg->name, reg->target_regnum, reg->save_restore);
+    if (reg->group)
+      printf_unfiltered ("\"%s\", ", reg->group);
+    else
+      printf_unfiltered ("NULL, ");
+    printf_unfiltered ("%d, \"%s\");\n", reg->bitsize, reg->type);
+  }
+
+private:
+  char *m_function;
+  std::string m_filename_after_features;
+  bool m_printed_field_type = false;
+  bool m_printed_type = false;
+};
+
 static void
 maint_print_c_tdesc_cmd (char *args, int from_tty)
 {
   const struct target_desc *tdesc;
-  const struct bfd_arch_info *compatible;
-  const char *filename, *inp;
-  char *function, *outp;
-  struct property *prop;
-  struct tdesc_feature *feature;
-  struct tdesc_reg *reg;
-  struct tdesc_type *type;
-  struct tdesc_type_field *f;
-  int ix, ix2, ix3;
-  int printed_field_type = 0;
+  const char *filename;
 
   if (args == NULL)
     {
@@ -1751,253 +2067,15 @@ maint_print_c_tdesc_cmd (char *args, int from_tty)
   if (filename == NULL)
     error (_("The current target description did not come from an XML file."));
 
-  filename = lbasename (filename);
-  function = (char *) alloca (strlen (filename) + 1);
-  for (inp = filename, outp = function; *inp != '\0'; inp++)
-    if (*inp == '.')
-      break;
-    else if (*inp == '-')
-      *outp++ = '_';
-    else
-      *outp++ = *inp;
-  *outp = '\0';
-
-  /* Standard boilerplate.  */
-  printf_unfiltered ("/* THIS FILE IS GENERATED.  "
-                    "-*- buffer-read-only: t -*- vi"
-                    ":set ro:\n");
-  printf_unfiltered ("  Original: %s */\n\n", filename);
-  printf_unfiltered ("#include \"defs.h\"\n");
-  printf_unfiltered ("#include \"osabi.h\"\n");
-  printf_unfiltered ("#include \"target-descriptions.h\"\n");
-  printf_unfiltered ("\n");
-
-  printf_unfiltered ("struct target_desc *tdesc_%s;\n", function);
-  printf_unfiltered ("static void\n");
-  printf_unfiltered ("initialize_tdesc_%s (void)\n", function);
-  printf_unfiltered ("{\n");
-  printf_unfiltered
-    ("  struct target_desc *result = allocate_target_description ();\n");
-  printf_unfiltered ("  struct tdesc_feature *feature;\n");
-
-  /* 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'.  */
-  for (ix = 0;
-       VEC_iterate (tdesc_feature_p, tdesc->features, ix, feature);
-       ix++)
-    {
-      int printed_desc_type = 0;
+  std::string filename_after_features (filename);
+  auto loc = filename_after_features.rfind ("/features/");
 
-      for (ix2 = 0;
-          VEC_iterate (tdesc_type_p, feature->types, ix2, type);
-          ix2++)
-       {
-         if (!printed_field_type)
-           {
-             printf_unfiltered ("  struct tdesc_type *field_type;\n");
-             printed_field_type = 1;
-           }
+  if (loc != std::string::npos)
+    filename_after_features = filename_after_features.substr (loc + 10);
 
-         if ((type->kind == TDESC_TYPE_UNION
-              || type->kind == TDESC_TYPE_STRUCT
-              || type->kind == TDESC_TYPE_FLAGS
-              || type->kind == TDESC_TYPE_ENUM)
-             && VEC_length (tdesc_type_field, type->u.u.fields) > 0)
-           {
-             printf_unfiltered ("  struct tdesc_type *type;\n");
-             printed_desc_type = 1;
-             break;
-           }
-       }
-
-      if (printed_desc_type)
-       break;
-    }
-
-  printf_unfiltered ("\n");
-
-  if (tdesc_architecture (tdesc) != NULL)
-    {
-      printf_unfiltered
-       ("  set_tdesc_architecture (result, bfd_scan_arch (\"%s\"));\n",
-        tdesc_architecture (tdesc)->printable_name);
-      printf_unfiltered ("\n");
-    }
-
-  if (tdesc_osabi (tdesc) > GDB_OSABI_UNKNOWN
-      && tdesc_osabi (tdesc) < GDB_OSABI_INVALID)
-    {
-      printf_unfiltered
-       ("  set_tdesc_osabi (result, osabi_from_tdesc_string (\"%s\"));\n",
-        gdbarch_osabi_name (tdesc_osabi (tdesc)));
-      printf_unfiltered ("\n");
-    }
-
-  for (ix = 0; VEC_iterate (arch_p, tdesc->compatible, ix, compatible);
-       ix++)
-    {
-      printf_unfiltered
-       ("  tdesc_add_compatible (result, bfd_scan_arch (\"%s\"));\n",
-        compatible->printable_name);
-    }
-  if (ix)
-    printf_unfiltered ("\n");
-
-  for (ix = 0; VEC_iterate (property_s, tdesc->properties, ix, prop);
-       ix++)
-    {
-      printf_unfiltered ("  set_tdesc_property (result, \"%s\", \"%s\");\n",
-             prop->key, prop->value);
-    }
-
-  for (ix = 0;
-       VEC_iterate (tdesc_feature_p, tdesc->features, ix, feature);
-       ix++)
-    {
-      printf_unfiltered ("  \
-feature = tdesc_create_feature (result, \"%s\");\n",
-                        feature->name);
-
-      for (ix2 = 0;
-          VEC_iterate (tdesc_type_p, feature->types, ix2, type);
-          ix2++)
-       {
-         switch (type->kind)
-           {
-           case TDESC_TYPE_VECTOR:
-             printf_unfiltered
-               ("  field_type = tdesc_named_type (feature, \"%s\");\n",
-                type->u.v.type->name);
-             printf_unfiltered
-               ("  tdesc_create_vector (feature, \"%s\", field_type, %d);\n",
-                type->name, 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->name);
-                 if (type->u.u.size != 0)
-                   printf_unfiltered
-                     ("  tdesc_set_struct_size (type, %d);\n",
-                      type->u.u.size);
-               }
-             else
-               {
-                 printf_unfiltered
-                   ("  type = tdesc_create_flags (feature, \"%s\", %d);\n",
-                    type->name, type->u.u.size);
-               }
-             for (ix3 = 0;
-                  VEC_iterate (tdesc_type_field, type->u.u.fields, ix3, f);
-                  ix3++)
-               {
-                 const char *type_name;
-
-                 gdb_assert (f->type != NULL);
-                 type_name = f->type->name;
-
-                 /* To minimize changes to generated files, don't emit type
-                    info for fields that have defaulted types.  */
-                 if (f->start != -1)
-                   {
-                     gdb_assert (f->end != -1);
-                     if (f->type->kind == TDESC_TYPE_BOOL)
-                       {
-                         gdb_assert (f->start == f->end);
-                         printf_unfiltered
-                           ("  tdesc_add_flag (type, %d, \"%s\");\n",
-                            f->start, f->name);
-                       }
-                     else if ((type->u.u.size == 4
-                               && f->type->kind == TDESC_TYPE_UINT32)
-                              || (type->u.u.size == 8
-                                  && f->type->kind == TDESC_TYPE_UINT64))
-                       {
-                         printf_unfiltered
-                           ("  tdesc_add_bitfield (type, \"%s\", %d, %d);\n",
-                            f->name, f->start, f->end);
-                       }
-                     else
-                       {
-                         printf_unfiltered
-                           ("  field_type = tdesc_named_type (feature,"
-                            " \"%s\");\n",
-                            type_name);
-                         printf_unfiltered
-                           ("  tdesc_add_typed_bitfield (type, \"%s\","
-                            " %d, %d, field_type);\n",
-                            f->name, f->start, f->end);
-                       }
-                   }
-                 else /* Not a bitfield.  */
-                   {
-                     gdb_assert (f->end == -1);
-                     gdb_assert (type->kind == TDESC_TYPE_STRUCT);
-                     printf_unfiltered
-                       ("  field_type = tdesc_named_type (feature,"
-                        " \"%s\");\n",
-                        type_name);
-                     printf_unfiltered
-                       ("  tdesc_add_field (type, \"%s\", field_type);\n",
-                        f->name);
-                   }
-               }
-             break;
-           case TDESC_TYPE_UNION:
-             printf_unfiltered
-               ("  type = tdesc_create_union (feature, \"%s\");\n",
-                type->name);
-             for (ix3 = 0;
-                  VEC_iterate (tdesc_type_field, type->u.u.fields, ix3, f);
-                  ix3++)
-               {
-                 printf_unfiltered
-                   ("  field_type = tdesc_named_type (feature, \"%s\");\n",
-                    f->type->name);
-                 printf_unfiltered
-                   ("  tdesc_add_field (type, \"%s\", field_type);\n",
-                    f->name);
-               }
-             break;
-           case TDESC_TYPE_ENUM:
-             printf_unfiltered
-               ("  type = tdesc_create_enum (feature, \"%s\", %d);\n",
-                type->name, type->u.u.size);
-             for (ix3 = 0;
-                  VEC_iterate (tdesc_type_field, type->u.u.fields, ix3, f);
-                  ix3++)
-               printf_unfiltered
-                 ("  tdesc_add_enum_value (type, %d, \"%s\");\n",
-                  f->start, f->name);
-             break;
-           default:
-             error (_("C output is not supported type \"%s\"."), type->name);
-           }
-         printf_unfiltered ("\n");
-       }
-
-      for (ix2 = 0;
-          VEC_iterate (tdesc_reg_p, feature->registers, ix2, reg);
-          ix2++)
-       {
-         printf_unfiltered ("  tdesc_create_reg (feature, \"%s\", %ld, %d, ",
-                            reg->name, reg->target_regnum, reg->save_restore);
-         if (reg->group)
-           printf_unfiltered ("\"%s\", ", reg->group);
-         else
-           printf_unfiltered ("NULL, ");
-         printf_unfiltered ("%d, \"%s\");\n", reg->bitsize, reg->type);
-       }
-
-      printf_unfiltered ("\n");
-    }
+  print_c_tdesc v (filename_after_features);
 
-  printf_unfiltered ("  tdesc_%s = result;\n", function);
-  printf_unfiltered ("}\n");
+  tdesc->accept (v);
 }
 
 /* Provide a prototype to silence -Wmissing-prototypes.  */