This is the mail archive of the gdb-cvs@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[binutils-gdb] Use visitor pattern for "maint print c-tdesc"


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=6eb1e6a8c1c83d0fb5b06192d1ec218d3a358f23

commit 6eb1e6a8c1c83d0fb5b06192d1ec218d3a358f23
Author: Yao Qi <yao.qi@linaro.org>
Date:   Wed Jul 26 12:56:54 2017 +0100

    Use visitor pattern for "maint print c-tdesc"
    
    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.

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

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index d42ba8e..577c598 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,5 +1,133 @@
 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.
 	(i386_linux_core_read_description): Call
 	i386_linux_read_description.
diff --git a/gdb/features/aarch64.c b/gdb/features/aarch64.c
index e9eaed8..7411cac 100644
--- a/gdb/features/aarch64.c
+++ b/gdb/features/aarch64.c
@@ -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, "");
diff --git a/gdb/features/arc-arcompact.c b/gdb/features/arc-arcompact.c
index a527cc2..ea84a40 100644
--- a/gdb/features/arc-arcompact.c
+++ b/gdb/features/arc-arcompact.c
@@ -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);
diff --git a/gdb/features/arc-v2.c b/gdb/features/arc-v2.c
index b2bdfb5..1eefc24 100644
--- a/gdb/features/arc-v2.c
+++ b/gdb/features/arc-v2.c
@@ -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);
diff --git a/gdb/features/arm/arm-with-iwmmxt.c b/gdb/features/arm/arm-with-iwmmxt.c
index 1770e03..5f839a0 100644
--- a/gdb/features/arm/arm-with-iwmmxt.c
+++ b/gdb/features/arm/arm-with-iwmmxt.c
@@ -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);
diff --git a/gdb/features/arm/arm-with-m-fpa-layout.c b/gdb/features/arm/arm-with-m-fpa-layout.c
index f720614..99bebc3 100644
--- a/gdb/features/arm/arm-with-m-fpa-layout.c
+++ b/gdb/features/arm/arm-with-m-fpa-layout.c
@@ -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");
diff --git a/gdb/features/arm/arm-with-m-vfp-d16.c b/gdb/features/arm/arm-with-m-vfp-d16.c
index 069baac..ab91673 100644
--- a/gdb/features/arm/arm-with-m-vfp-d16.c
+++ b/gdb/features/arm/arm-with-m-vfp-d16.c
@@ -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");
diff --git a/gdb/features/arm/arm-with-m.c b/gdb/features/arm/arm-with-m.c
index 64d31bb..619fd72 100644
--- a/gdb/features/arm/arm-with-m.c
+++ b/gdb/features/arm/arm-with-m.c
@@ -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");
diff --git a/gdb/features/arm/arm-with-neon.c b/gdb/features/arm/arm-with-neon.c
index d365c0f..682ad75 100644
--- a/gdb/features/arm/arm-with-neon.c
+++ b/gdb/features/arm/arm-with-neon.c
@@ -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");
diff --git a/gdb/features/arm/arm-with-vfpv2.c b/gdb/features/arm/arm-with-vfpv2.c
index 0ebbfef..368256c 100644
--- a/gdb/features/arm/arm-with-vfpv2.c
+++ b/gdb/features/arm/arm-with-vfpv2.c
@@ -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");
diff --git a/gdb/features/arm/arm-with-vfpv3.c b/gdb/features/arm/arm-with-vfpv3.c
index e235dfa..ade7c95 100644
--- a/gdb/features/arm/arm-with-vfpv3.c
+++ b/gdb/features/arm/arm-with-vfpv3.c
@@ -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");
diff --git a/gdb/features/i386/amd64-avx-avx512-linux.c b/gdb/features/i386/amd64-avx-avx512-linux.c
index 00fbf3a..de58f06 100644
--- a/gdb/features/i386/amd64-avx-avx512-linux.c
+++ b/gdb/features/i386/amd64-avx-avx512-linux.c
@@ -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, "");
diff --git a/gdb/features/i386/amd64-avx-avx512.c b/gdb/features/i386/amd64-avx-avx512.c
index f1ebde1..354d826 100644
--- a/gdb/features/i386/amd64-avx-avx512.c
+++ b/gdb/features/i386/amd64-avx-avx512.c
@@ -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, "");
diff --git a/gdb/features/i386/amd64-avx-linux.c b/gdb/features/i386/amd64-avx-linux.c
index 1d56dbf..00dfd3c 100644
--- a/gdb/features/i386/amd64-avx-linux.c
+++ b/gdb/features/i386/amd64-avx-linux.c
@@ -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, "");
diff --git a/gdb/features/i386/amd64-avx-mpx-avx512-pku-linux.c b/gdb/features/i386/amd64-avx-mpx-avx512-pku-linux.c
index 4e4ced7..7fd016f 100644
--- a/gdb/features/i386/amd64-avx-mpx-avx512-pku-linux.c
+++ b/gdb/features/i386/amd64-avx-mpx-avx512-pku-linux.c
@@ -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, "");
diff --git a/gdb/features/i386/amd64-avx-mpx-avx512-pku.c b/gdb/features/i386/amd64-avx-mpx-avx512-pku.c
index f119e52..bade64d 100644
--- a/gdb/features/i386/amd64-avx-mpx-avx512-pku.c
+++ b/gdb/features/i386/amd64-avx-mpx-avx512-pku.c
@@ -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, "");
diff --git a/gdb/features/i386/amd64-avx-mpx-linux.c b/gdb/features/i386/amd64-avx-mpx-linux.c
index 26c1339..5fe1127 100644
--- a/gdb/features/i386/amd64-avx-mpx-linux.c
+++ b/gdb/features/i386/amd64-avx-mpx-linux.c
@@ -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, "");
diff --git a/gdb/features/i386/amd64-avx-mpx.c b/gdb/features/i386/amd64-avx-mpx.c
index 0c5161f..5dced15 100644
--- a/gdb/features/i386/amd64-avx-mpx.c
+++ b/gdb/features/i386/amd64-avx-mpx.c
@@ -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, "");
diff --git a/gdb/features/i386/amd64-avx.c b/gdb/features/i386/amd64-avx.c
index 61d3ff5..016689a 100644
--- a/gdb/features/i386/amd64-avx.c
+++ b/gdb/features/i386/amd64-avx.c
@@ -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, "");
diff --git a/gdb/features/i386/amd64-linux.c b/gdb/features/i386/amd64-linux.c
index 0e921ba9..58c4405 100644
--- a/gdb/features/i386/amd64-linux.c
+++ b/gdb/features/i386/amd64-linux.c
@@ -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, "");
diff --git a/gdb/features/i386/amd64-mpx-linux.c b/gdb/features/i386/amd64-mpx-linux.c
index e26a74a..dcf92f9 100644
--- a/gdb/features/i386/amd64-mpx-linux.c
+++ b/gdb/features/i386/amd64-mpx-linux.c
@@ -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, "");
diff --git a/gdb/features/i386/amd64-mpx.c b/gdb/features/i386/amd64-mpx.c
index 026fdb8..ed7767d 100644
--- a/gdb/features/i386/amd64-mpx.c
+++ b/gdb/features/i386/amd64-mpx.c
@@ -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, "");
diff --git a/gdb/features/i386/amd64.c b/gdb/features/i386/amd64.c
index 31ab6cc..4ad79cb 100644
--- a/gdb/features/i386/amd64.c
+++ b/gdb/features/i386/amd64.c
@@ -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, "");
diff --git a/gdb/features/i386/i386-avx-avx512-linux.c b/gdb/features/i386/i386-avx-avx512-linux.c
index 81149d5..545149d 100644
--- a/gdb/features/i386/i386-avx-avx512-linux.c
+++ b/gdb/features/i386/i386-avx-avx512-linux.c
@@ -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, "");
diff --git a/gdb/features/i386/i386-avx-avx512.c b/gdb/features/i386/i386-avx-avx512.c
index 1075ca0..585a0ac 100644
--- a/gdb/features/i386/i386-avx-avx512.c
+++ b/gdb/features/i386/i386-avx-avx512.c
@@ -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, "");
diff --git a/gdb/features/i386/i386-avx-linux.c b/gdb/features/i386/i386-avx-linux.c
index 4a8c6b5..3ef087d 100644
--- a/gdb/features/i386/i386-avx-linux.c
+++ b/gdb/features/i386/i386-avx-linux.c
@@ -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, "");
diff --git a/gdb/features/i386/i386-avx-mpx-avx512-pku-linux.c b/gdb/features/i386/i386-avx-mpx-avx512-pku-linux.c
index f90c834..e6eebf1 100644
--- a/gdb/features/i386/i386-avx-mpx-avx512-pku-linux.c
+++ b/gdb/features/i386/i386-avx-mpx-avx512-pku-linux.c
@@ -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, "");
diff --git a/gdb/features/i386/i386-avx-mpx-avx512-pku.c b/gdb/features/i386/i386-avx-mpx-avx512-pku.c
index 08d9b4b..d7dd3bb 100644
--- a/gdb/features/i386/i386-avx-mpx-avx512-pku.c
+++ b/gdb/features/i386/i386-avx-mpx-avx512-pku.c
@@ -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, "");
diff --git a/gdb/features/i386/i386-avx-mpx-linux.c b/gdb/features/i386/i386-avx-mpx-linux.c
index 4b27bfc..f62c487 100644
--- a/gdb/features/i386/i386-avx-mpx-linux.c
+++ b/gdb/features/i386/i386-avx-mpx-linux.c
@@ -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, "");
diff --git a/gdb/features/i386/i386-avx-mpx.c b/gdb/features/i386/i386-avx-mpx.c
index b27b40a..f479bda 100644
--- a/gdb/features/i386/i386-avx-mpx.c
+++ b/gdb/features/i386/i386-avx-mpx.c
@@ -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, "");
diff --git a/gdb/features/i386/i386-avx.c b/gdb/features/i386/i386-avx.c
index 1cb0f9e..f888335 100644
--- a/gdb/features/i386/i386-avx.c
+++ b/gdb/features/i386/i386-avx.c
@@ -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, "");
diff --git a/gdb/features/i386/i386-linux.c b/gdb/features/i386/i386-linux.c
index c7796c3..0394842 100644
--- a/gdb/features/i386/i386-linux.c
+++ b/gdb/features/i386/i386-linux.c
@@ -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, "");
diff --git a/gdb/features/i386/i386-mmx-linux.c b/gdb/features/i386/i386-mmx-linux.c
index e53b55f..1577972 100644
--- a/gdb/features/i386/i386-mmx-linux.c
+++ b/gdb/features/i386/i386-mmx-linux.c
@@ -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, "");
diff --git a/gdb/features/i386/i386-mmx.c b/gdb/features/i386/i386-mmx.c
index 74f67ed..02aee89 100644
--- a/gdb/features/i386/i386-mmx.c
+++ b/gdb/features/i386/i386-mmx.c
@@ -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, "");
diff --git a/gdb/features/i386/i386-mpx-linux.c b/gdb/features/i386/i386-mpx-linux.c
index 43ea192..6dea8e0 100644
--- a/gdb/features/i386/i386-mpx-linux.c
+++ b/gdb/features/i386/i386-mpx-linux.c
@@ -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, "");
diff --git a/gdb/features/i386/i386-mpx.c b/gdb/features/i386/i386-mpx.c
index e832d2e..d08441b 100644
--- a/gdb/features/i386/i386-mpx.c
+++ b/gdb/features/i386/i386-mpx.c
@@ -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, "");
diff --git a/gdb/features/i386/i386.c b/gdb/features/i386/i386.c
index ede73fc..eb9a266 100644
--- a/gdb/features/i386/i386.c
+++ b/gdb/features/i386/i386.c
@@ -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, "");
diff --git a/gdb/features/i386/x32-avx-avx512-linux.c b/gdb/features/i386/x32-avx-avx512-linux.c
index 0467d87..c023a10 100644
--- a/gdb/features/i386/x32-avx-avx512-linux.c
+++ b/gdb/features/i386/x32-avx-avx512-linux.c
@@ -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, "");
diff --git a/gdb/features/i386/x32-avx-avx512.c b/gdb/features/i386/x32-avx-avx512.c
index a7a2d52..9630c99 100644
--- a/gdb/features/i386/x32-avx-avx512.c
+++ b/gdb/features/i386/x32-avx-avx512.c
@@ -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, "");
diff --git a/gdb/features/i386/x32-avx-linux.c b/gdb/features/i386/x32-avx-linux.c
index 8406815..211d138 100644
--- a/gdb/features/i386/x32-avx-linux.c
+++ b/gdb/features/i386/x32-avx-linux.c
@@ -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, "");
diff --git a/gdb/features/i386/x32-avx.c b/gdb/features/i386/x32-avx.c
index 7f62e8f..775e834 100644
--- a/gdb/features/i386/x32-avx.c
+++ b/gdb/features/i386/x32-avx.c
@@ -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, "");
diff --git a/gdb/features/i386/x32-linux.c b/gdb/features/i386/x32-linux.c
index ae49549..05d502b 100644
--- a/gdb/features/i386/x32-linux.c
+++ b/gdb/features/i386/x32-linux.c
@@ -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, "");
diff --git a/gdb/features/i386/x32.c b/gdb/features/i386/x32.c
index 6005d99..728b5ce 100644
--- a/gdb/features/i386/x32.c
+++ b/gdb/features/i386/x32.c
@@ -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, "");
diff --git a/gdb/features/mips-dsp-linux.c b/gdb/features/mips-dsp-linux.c
index 80ceb22..26e9c6b 100644
--- a/gdb/features/mips-dsp-linux.c
+++ b/gdb/features/mips-dsp-linux.c
@@ -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");
diff --git a/gdb/features/mips-linux.c b/gdb/features/mips-linux.c
index c990119..c9ad3ca 100644
--- a/gdb/features/mips-linux.c
+++ b/gdb/features/mips-linux.c
@@ -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");
diff --git a/gdb/features/mips64-dsp-linux.c b/gdb/features/mips64-dsp-linux.c
index bc09078..05317b7 100644
--- a/gdb/features/mips64-dsp-linux.c
+++ b/gdb/features/mips64-dsp-linux.c
@@ -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");
diff --git a/gdb/features/mips64-linux.c b/gdb/features/mips64-linux.c
index 2ecda9b..4814152 100644
--- a/gdb/features/mips64-linux.c
+++ b/gdb/features/mips64-linux.c
@@ -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");
diff --git a/gdb/features/nds32.c b/gdb/features/nds32.c
index 21f63f5..89b246b 100644
--- a/gdb/features/nds32.c
+++ b/gdb/features/nds32.c
@@ -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");
diff --git a/gdb/features/nios2-linux.c b/gdb/features/nios2-linux.c
index 3288f79..0368567 100644
--- a/gdb/features/nios2-linux.c
+++ b/gdb/features/nios2-linux.c
@@ -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");
diff --git a/gdb/features/nios2.c b/gdb/features/nios2.c
index 0cedc12..705f499 100644
--- a/gdb/features/nios2.c
+++ b/gdb/features/nios2.c
@@ -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");
diff --git a/gdb/features/rs6000/powerpc-32.c b/gdb/features/rs6000/powerpc-32.c
index 5ee5d9c..39f5b14 100644
--- a/gdb/features/rs6000/powerpc-32.c
+++ b/gdb/features/rs6000/powerpc-32.c
@@ -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");
diff --git a/gdb/features/rs6000/powerpc-32l.c b/gdb/features/rs6000/powerpc-32l.c
index 971fd4b..8089c04 100644
--- a/gdb/features/rs6000/powerpc-32l.c
+++ b/gdb/features/rs6000/powerpc-32l.c
@@ -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");
diff --git a/gdb/features/rs6000/powerpc-64.c b/gdb/features/rs6000/powerpc-64.c
index 160d122..a9760a3 100644
--- a/gdb/features/rs6000/powerpc-64.c
+++ b/gdb/features/rs6000/powerpc-64.c
@@ -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");
diff --git a/gdb/features/rs6000/powerpc-64l.c b/gdb/features/rs6000/powerpc-64l.c
index 16a766e..408794e 100644
--- a/gdb/features/rs6000/powerpc-64l.c
+++ b/gdb/features/rs6000/powerpc-64l.c
@@ -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");
diff --git a/gdb/features/rs6000/powerpc-7400.c b/gdb/features/rs6000/powerpc-7400.c
index 69d20c4..32b6995 100644
--- a/gdb/features/rs6000/powerpc-7400.c
+++ b/gdb/features/rs6000/powerpc-7400.c
@@ -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);
diff --git a/gdb/features/rs6000/powerpc-altivec32.c b/gdb/features/rs6000/powerpc-altivec32.c
index 285e87d..e97132e 100644
--- a/gdb/features/rs6000/powerpc-altivec32.c
+++ b/gdb/features/rs6000/powerpc-altivec32.c
@@ -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);
diff --git a/gdb/features/rs6000/powerpc-altivec32l.c b/gdb/features/rs6000/powerpc-altivec32l.c
index 447ed47..a9445d9 100644
--- a/gdb/features/rs6000/powerpc-altivec32l.c
+++ b/gdb/features/rs6000/powerpc-altivec32l.c
@@ -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);
diff --git a/gdb/features/rs6000/powerpc-altivec64.c b/gdb/features/rs6000/powerpc-altivec64.c
index 1e9a61d..3b626a9 100644
--- a/gdb/features/rs6000/powerpc-altivec64.c
+++ b/gdb/features/rs6000/powerpc-altivec64.c
@@ -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);
diff --git a/gdb/features/rs6000/powerpc-altivec64l.c b/gdb/features/rs6000/powerpc-altivec64l.c
index 10ecd8a..cca5353 100644
--- a/gdb/features/rs6000/powerpc-altivec64l.c
+++ b/gdb/features/rs6000/powerpc-altivec64l.c
@@ -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);
diff --git a/gdb/features/rs6000/powerpc-cell32l.c b/gdb/features/rs6000/powerpc-cell32l.c
index 7d33dc2..c615b8d 100644
--- a/gdb/features/rs6000/powerpc-cell32l.c
+++ b/gdb/features/rs6000/powerpc-cell32l.c
@@ -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);
diff --git a/gdb/features/rs6000/powerpc-cell64l.c b/gdb/features/rs6000/powerpc-cell64l.c
index 6054c26..5040e5e 100644
--- a/gdb/features/rs6000/powerpc-cell64l.c
+++ b/gdb/features/rs6000/powerpc-cell64l.c
@@ -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);
diff --git a/gdb/features/rs6000/powerpc-e500.c b/gdb/features/rs6000/powerpc-e500.c
index aaca3a7..4466bc7 100644
--- a/gdb/features/rs6000/powerpc-e500.c
+++ b/gdb/features/rs6000/powerpc-e500.c
@@ -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");
diff --git a/gdb/features/rs6000/powerpc-e500l.c b/gdb/features/rs6000/powerpc-e500l.c
index de03862..61acbf3 100644
--- a/gdb/features/rs6000/powerpc-e500l.c
+++ b/gdb/features/rs6000/powerpc-e500l.c
@@ -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");
diff --git a/gdb/features/rs6000/powerpc-isa205-32l.c b/gdb/features/rs6000/powerpc-isa205-32l.c
index 1b5bd6d..de6548f 100644
--- a/gdb/features/rs6000/powerpc-isa205-32l.c
+++ b/gdb/features/rs6000/powerpc-isa205-32l.c
@@ -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");
diff --git a/gdb/features/rs6000/powerpc-isa205-64l.c b/gdb/features/rs6000/powerpc-isa205-64l.c
index 31bfc87..cd3b2c1 100644
--- a/gdb/features/rs6000/powerpc-isa205-64l.c
+++ b/gdb/features/rs6000/powerpc-isa205-64l.c
@@ -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");
diff --git a/gdb/features/rs6000/powerpc-isa205-altivec32l.c b/gdb/features/rs6000/powerpc-isa205-altivec32l.c
index 6c216ce..943d02d 100644
--- a/gdb/features/rs6000/powerpc-isa205-altivec32l.c
+++ b/gdb/features/rs6000/powerpc-isa205-altivec32l.c
@@ -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);
diff --git a/gdb/features/rs6000/powerpc-isa205-altivec64l.c b/gdb/features/rs6000/powerpc-isa205-altivec64l.c
index 2c206aa..d454bac 100644
--- a/gdb/features/rs6000/powerpc-isa205-altivec64l.c
+++ b/gdb/features/rs6000/powerpc-isa205-altivec64l.c
@@ -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);
diff --git a/gdb/features/rs6000/powerpc-isa205-vsx32l.c b/gdb/features/rs6000/powerpc-isa205-vsx32l.c
index 4659ce1..09fd5ce 100644
--- a/gdb/features/rs6000/powerpc-isa205-vsx32l.c
+++ b/gdb/features/rs6000/powerpc-isa205-vsx32l.c
@@ -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);
diff --git a/gdb/features/rs6000/powerpc-isa205-vsx64l.c b/gdb/features/rs6000/powerpc-isa205-vsx64l.c
index 64b12b9..d295ab7 100644
--- a/gdb/features/rs6000/powerpc-isa205-vsx64l.c
+++ b/gdb/features/rs6000/powerpc-isa205-vsx64l.c
@@ -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);
diff --git a/gdb/features/rs6000/powerpc-vsx32.c b/gdb/features/rs6000/powerpc-vsx32.c
index ba1fcb6..8cf7562 100644
--- a/gdb/features/rs6000/powerpc-vsx32.c
+++ b/gdb/features/rs6000/powerpc-vsx32.c
@@ -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);
diff --git a/gdb/features/rs6000/powerpc-vsx32l.c b/gdb/features/rs6000/powerpc-vsx32l.c
index 013e392..e8c1881 100644
--- a/gdb/features/rs6000/powerpc-vsx32l.c
+++ b/gdb/features/rs6000/powerpc-vsx32l.c
@@ -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);
diff --git a/gdb/features/rs6000/powerpc-vsx64.c b/gdb/features/rs6000/powerpc-vsx64.c
index ca02323..30953c5 100644
--- a/gdb/features/rs6000/powerpc-vsx64.c
+++ b/gdb/features/rs6000/powerpc-vsx64.c
@@ -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);
diff --git a/gdb/features/rs6000/powerpc-vsx64l.c b/gdb/features/rs6000/powerpc-vsx64l.c
index 31bb224..5f12650 100644
--- a/gdb/features/rs6000/powerpc-vsx64l.c
+++ b/gdb/features/rs6000/powerpc-vsx64l.c
@@ -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);
diff --git a/gdb/features/rs6000/rs6000.c b/gdb/features/rs6000/rs6000.c
index d4e93a5..709b5da 100644
--- a/gdb/features/rs6000/rs6000.c
+++ b/gdb/features/rs6000/rs6000.c
@@ -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");
diff --git a/gdb/features/s390-linux32.c b/gdb/features/s390-linux32.c
index 6d13094..01c136c 100644
--- a/gdb/features/s390-linux32.c
+++ b/gdb/features/s390-linux32.c
@@ -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");
diff --git a/gdb/features/s390-linux32v1.c b/gdb/features/s390-linux32v1.c
index f773fc1..65a4a50 100644
--- a/gdb/features/s390-linux32v1.c
+++ b/gdb/features/s390-linux32v1.c
@@ -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");
diff --git a/gdb/features/s390-linux32v2.c b/gdb/features/s390-linux32v2.c
index 2317752..b5d25ec 100644
--- a/gdb/features/s390-linux32v2.c
+++ b/gdb/features/s390-linux32v2.c
@@ -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");
diff --git a/gdb/features/s390-linux64.c b/gdb/features/s390-linux64.c
index 3c7145b..531d3a1 100644
--- a/gdb/features/s390-linux64.c
+++ b/gdb/features/s390-linux64.c
@@ -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");
diff --git a/gdb/features/s390-linux64v1.c b/gdb/features/s390-linux64v1.c
index 72bd894..d75deca 100644
--- a/gdb/features/s390-linux64v1.c
+++ b/gdb/features/s390-linux64v1.c
@@ -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");
diff --git a/gdb/features/s390-linux64v2.c b/gdb/features/s390-linux64v2.c
index a1757da..bd10ee8 100644
--- a/gdb/features/s390-linux64v2.c
+++ b/gdb/features/s390-linux64v2.c
@@ -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");
diff --git a/gdb/features/s390-te-linux64.c b/gdb/features/s390-te-linux64.c
index 0a3aedf..fe2020a 100644
--- a/gdb/features/s390-te-linux64.c
+++ b/gdb/features/s390-te-linux64.c
@@ -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");
diff --git a/gdb/features/s390-tevx-linux64.c b/gdb/features/s390-tevx-linux64.c
index 5bc3eec..d9b18d3 100644
--- a/gdb/features/s390-tevx-linux64.c
+++ b/gdb/features/s390-tevx-linux64.c
@@ -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);
diff --git a/gdb/features/s390-vx-linux64.c b/gdb/features/s390-vx-linux64.c
index c3ffa16..b2138dd 100644
--- a/gdb/features/s390-vx-linux64.c
+++ b/gdb/features/s390-vx-linux64.c
@@ -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);
diff --git a/gdb/features/s390x-linux64.c b/gdb/features/s390x-linux64.c
index 04502c6..9d48ea3 100644
--- a/gdb/features/s390x-linux64.c
+++ b/gdb/features/s390x-linux64.c
@@ -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");
diff --git a/gdb/features/s390x-linux64v1.c b/gdb/features/s390x-linux64v1.c
index 05bfd53..b95f1c4 100644
--- a/gdb/features/s390x-linux64v1.c
+++ b/gdb/features/s390x-linux64v1.c
@@ -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");
diff --git a/gdb/features/s390x-linux64v2.c b/gdb/features/s390x-linux64v2.c
index 4108cc0..9aab89f 100644
--- a/gdb/features/s390x-linux64v2.c
+++ b/gdb/features/s390x-linux64v2.c
@@ -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");
diff --git a/gdb/features/s390x-te-linux64.c b/gdb/features/s390x-te-linux64.c
index f75d900..babd3bd 100644
--- a/gdb/features/s390x-te-linux64.c
+++ b/gdb/features/s390x-te-linux64.c
@@ -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");
diff --git a/gdb/features/s390x-tevx-linux64.c b/gdb/features/s390x-tevx-linux64.c
index 327cd23..02afd3a 100644
--- a/gdb/features/s390x-tevx-linux64.c
+++ b/gdb/features/s390x-tevx-linux64.c
@@ -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);
diff --git a/gdb/features/s390x-vx-linux64.c b/gdb/features/s390x-vx-linux64.c
index e66da70..120db53 100644
--- a/gdb/features/s390x-vx-linux64.c
+++ b/gdb/features/s390x-vx-linux64.c
@@ -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);
diff --git a/gdb/features/tic6x-c62x-linux.c b/gdb/features/tic6x-c62x-linux.c
index 8dd426d..86b905d 100644
--- a/gdb/features/tic6x-c62x-linux.c
+++ b/gdb/features/tic6x-c62x-linux.c
@@ -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");
diff --git a/gdb/features/tic6x-c62x.c b/gdb/features/tic6x-c62x.c
index 2089aaf..7dbf615 100644
--- a/gdb/features/tic6x-c62x.c
+++ b/gdb/features/tic6x-c62x.c
@@ -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");
diff --git a/gdb/features/tic6x-c64x-linux.c b/gdb/features/tic6x-c64x-linux.c
index 2752358..b52048f 100644
--- a/gdb/features/tic6x-c64x-linux.c
+++ b/gdb/features/tic6x-c64x-linux.c
@@ -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");
diff --git a/gdb/features/tic6x-c64x.c b/gdb/features/tic6x-c64x.c
index 0feda24..618f802 100644
--- a/gdb/features/tic6x-c64x.c
+++ b/gdb/features/tic6x-c64x.c
@@ -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");
diff --git a/gdb/features/tic6x-c64xp-linux.c b/gdb/features/tic6x-c64xp-linux.c
index c1bee4c..ca8c505 100644
--- a/gdb/features/tic6x-c64xp-linux.c
+++ b/gdb/features/tic6x-c64xp-linux.c
@@ -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");
diff --git a/gdb/features/tic6x-c64xp.c b/gdb/features/tic6x-c64xp.c
index 160b854..4ca5125 100644
--- a/gdb/features/tic6x-c64xp.c
+++ b/gdb/features/tic6x-c64xp.c
@@ -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");
diff --git a/gdb/target-descriptions.c b/gdb/target-descriptions.c
index 4129486..46a8ecc 100644
--- a/gdb/target-descriptions.c
+++ b/gdb/target-descriptions.c
@@ -35,6 +35,25 @@
 #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 : t[...]

[diff truncated at 100000 bytes]


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]