]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
Name and seperate the union in gdbarch_info
authorAlan Hayward <alan.hayward@arm.com>
Thu, 13 Sep 2018 15:44:48 +0000 (16:44 +0100)
committerAlan Hayward <alan.hayward@arm.com>
Thu, 13 Sep 2018 15:44:48 +0000 (16:44 +0100)
Add gdbarch_target_info as a new union. This will allow it to be
used directly as a parameter to functions in later patches.

2018-09-13  Alan Hayward  <alan.hayward@arm.com>

* aarch64-linux-nat.c
(aarch64_linux_nat_target::thread_architecture): Use target_info.
* aarch64-tdep.c (aarch64_gdbarch_init): Likewise.
* amd64-linux-tdep.c (amd64_linux_init_abi): Likewise.
(amd64_x32_linux_init_abi): Likewise.
* amd64-tdep.c (amd64_init_abi): Likewise.
* gdbarch.c: Regenerate.
* gdbarch.h: Likewise.
* gdbarch.sh (gdbarch_target_info): Add union
(gdbarch_info): Use gdbarch_target_info.
* i386-linux-tdep.c (i386_linux_init_abi): Use target_info.
* i386-tdep.c (i386_gdbarch_init): Likewise.
* mips-linux-tdep.c (mips_linux_init_abi): Likewise.
* mips-tdep.c (mips_gdbarch_init): Likewise.
* nds32-tdep.c (nds32_gdbarch_init): Likewise.
* ppc-linux-tdep.c (ppu2spu_sniffer): Likewise.
(ppc_linux_init_abi): Likewise.
* rs6000-tdep.c (rs6000_gdbarch_init): Likewise.
* s390-tdep.c (s390_gdbarch_init): Likewise.
* sparc-tdep.c (sparc32_gdbarch_init): Likewise.
* spu-multiarch.c (spu_gdbarch): Likewise.
* spu-tdep.c (spu_gdbarch_init): Likewise.

18 files changed:
gdb/aarch64-linux-nat.c
gdb/aarch64-tdep.c
gdb/amd64-linux-tdep.c
gdb/amd64-tdep.c
gdb/gdbarch.c
gdb/gdbarch.h
gdb/gdbarch.sh
gdb/i386-linux-tdep.c
gdb/i386-tdep.c
gdb/mips-linux-tdep.c
gdb/mips-tdep.c
gdb/nds32-tdep.c
gdb/ppc-linux-tdep.c
gdb/rs6000-tdep.c
gdb/s390-tdep.c
gdb/sparc-tdep.c
gdb/spu-multiarch.c
gdb/spu-tdep.c

index 61da550dcdebe914c92e1cf532ec661494ac0ae9..9105c4f34e31c32084b882d2b0cf47a2e4a41ff3 100644 (file)
@@ -915,7 +915,7 @@ aarch64_linux_nat_target::thread_architecture (ptid_t ptid)
   struct gdbarch_info info;
   gdbarch_info_init (&info);
   info.bfd_arch_info = bfd_lookup_arch (bfd_arch_spu, bfd_mach_spu);
-  info.id = (int *) vq;
+  info.target_info.id = (int *) vq;
   return gdbarch_find_by_info (info);
 }
 
index 498864d70d59446fca149e652911184606f8f207..9859ba15692d50cb54a6406a345dbd55938ac70b 100644 (file)
@@ -2990,8 +2990,8 @@ aarch64_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
 
   /* Use the vector length passed via the target info.  Otherwise use the vector
      length from the existing tdesc.  Otherwise assume no SVE.  */
-  if (info.id != 0)
-    vq = (uint64_t) info.id;
+  if (info.target_info.id != 0)
+    vq = (uint64_t) info.target_info.id;
   else
     vq = aarch64_get_tdesc_vq (tdesc);
 
@@ -3159,7 +3159,7 @@ aarch64_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
 
   /* Hook in the ABI-specific overrides, if they have been registered.  */
   info.target_desc = tdesc;
-  info.tdesc_data = tdesc_data;
+  info.target_info.tdesc_data = tdesc_data;
   gdbarch_init_osabi (info, gdbarch);
 
   dwarf2_frame_set_init_reg (gdbarch, aarch64_dwarf2_frame_init_reg);
index 7ab43897ab3800d20acfddf9e0aef84228017934..3bd4ba1ecbad5a5acfe247723d9788ed332eb545 100644 (file)
@@ -1854,7 +1854,7 @@ static void
 amd64_linux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
 {
   struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
-  struct tdesc_arch_data *tdesc_data = info.tdesc_data;
+  struct tdesc_arch_data *tdesc_data = info.target_info.tdesc_data;
   const struct tdesc_feature *feature;
   int valid_p;
 
@@ -2068,7 +2068,7 @@ static void
 amd64_x32_linux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
 {
   struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
-  struct tdesc_arch_data *tdesc_data = info.tdesc_data;
+  struct tdesc_arch_data *tdesc_data = info.target_info.tdesc_data;
   const struct tdesc_feature *feature;
   int valid_p;
 
index 088542d72b49ca6f5c2a5d58e1af3bf0b03e1ab2..57119ac2b8ef61911b3b8b87a0bb9c4385f9cfd4 100644 (file)
@@ -3104,7 +3104,7 @@ amd64_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch,
       const struct tdesc_feature *feature =
          tdesc_find_feature (tdesc, "org.gnu.gdb.i386.segments");
       struct tdesc_arch_data *tdesc_data_segments =
-         (struct tdesc_arch_data *) info.tdep_info;
+         (struct tdesc_arch_data *) info.target_info.tdep_info;
 
       tdesc_numbered_register (feature, tdesc_data_segments,
                       AMD64_FSBASE_REGNUM, "fs_base");
index e2abf263b3a97910dab25dafaa374f9d2d756c16..19dacea34fe881df11e5c05a372e1ec787c7c30b 100644 (file)
@@ -5402,8 +5402,8 @@ gdbarch_find_by_info (struct gdbarch_info info)
                          "gdbarch_find_by_info: info.abfd %s\n",
                          host_address_to_string (info.abfd));
       fprintf_unfiltered (gdb_stdlog,
-                         "gdbarch_find_by_info: info.tdep_info %s\n",
-                         host_address_to_string (info.tdep_info));
+                         "gdbarch_find_by_info: info.target_info.tdep_info %s\n",
+                         host_address_to_string (info.target_info.tdep_info));
     }
 
   /* Find the tdep code that knows about this architecture.  */
index fc2f1a84a1ca6ecf182862b7263b2100359e304d..72edc79177915324c353f75f297f78b23840b861 100644 (file)
@@ -102,6 +102,24 @@ typedef void (iterate_over_regset_sections_cb)
   (const char *sect_name, int supply_size, int collect_size,
    const struct regset *regset, const char *human_name, void *cb_data);
 
+/* Different targets need different indentification data for gdbarch_info.  */
+union gdbarch_target_info
+{
+  /* Architecture-specific information.  The generic form for targets
+     that have extra requirements.  */
+  struct gdbarch_tdep_info *tdep_info;
+
+  /* Architecture-specific target description data.  Numerous targets
+     need only this, so give them an easy way to hold it.  */
+  struct tdesc_arch_data *tdesc_data;
+
+  /* SPU file system ID.  This is a single integer, so using the
+     generic form would only complicate code.  Other targets may
+     reuse this member if suitable.  */
+  int *id;
+};
+
+
 
 /* The following are pre-initialized by GDBARCH.  */
 
@@ -1652,21 +1670,7 @@ struct gdbarch_info
   bfd *abfd;
 
   /* Use default: NULL (ZERO).  */
-  union
-    {
-      /* Architecture-specific information.  The generic form for targets
-        that have extra requirements.  */
-      struct gdbarch_tdep_info *tdep_info;
-
-      /* Architecture-specific target description data.  Numerous targets
-        need only this, so give them an easy way to hold it.  */
-      struct tdesc_arch_data *tdesc_data;
-
-      /* SPU file system ID.  This is a single integer, so using the
-        generic form would only complicate code.  Other targets may
-        reuse this member if suitable.  */
-      int *id;
-    };
+  union gdbarch_target_info target_info;
 
   /* Use default: GDB_OSABI_UNINITIALIZED (-1).  */
   enum gdb_osabi osabi;
index 670ac30c030346592fe1f310669644281b49bc75..9e770c41089cdb699f28950853554370d0feec77 100755 (executable)
@@ -1327,6 +1327,24 @@ typedef int (iterate_over_objfiles_in_search_order_cb_ftype)
 typedef void (iterate_over_regset_sections_cb)
   (const char *sect_name, int supply_size, int collect_size,
    const struct regset *regset, const char *human_name, void *cb_data);
+
+/* Different targets need different indentification data for gdbarch_info.  */
+union gdbarch_target_info
+{
+  /* Architecture-specific information.  The generic form for targets
+     that have extra requirements.  */
+  struct gdbarch_tdep_info *tdep_info;
+
+  /* Architecture-specific target description data.  Numerous targets
+     need only this, so give them an easy way to hold it.  */
+  struct tdesc_arch_data *tdesc_data;
+
+  /* SPU file system ID.  This is a single integer, so using the
+     generic form would only complicate code.  Other targets may
+     reuse this member if suitable.  */
+  int *id;
+};
+
 EOF
 
 # function typedef's
@@ -1476,21 +1494,7 @@ struct gdbarch_info
   bfd *abfd;
 
   /* Use default: NULL (ZERO).  */
-  union
-    {
-      /* Architecture-specific information.  The generic form for targets
-        that have extra requirements.  */
-      struct gdbarch_tdep_info *tdep_info;
-
-      /* Architecture-specific target description data.  Numerous targets
-        need only this, so give them an easy way to hold it.  */
-      struct tdesc_arch_data *tdesc_data;
-
-      /* SPU file system ID.  This is a single integer, so using the
-        generic form would only complicate code.  Other targets may
-        reuse this member if suitable.  */
-      int *id;
-    };
+  union gdbarch_target_info target_info;
 
   /* Use default: GDB_OSABI_UNINITIALIZED (-1).  */
   enum gdb_osabi osabi;
@@ -2420,8 +2424,8 @@ gdbarch_find_by_info (struct gdbarch_info info)
                          "gdbarch_find_by_info: info.abfd %s\n",
                          host_address_to_string (info.abfd));
       fprintf_unfiltered (gdb_stdlog,
-                         "gdbarch_find_by_info: info.tdep_info %s\n",
-                         host_address_to_string (info.tdep_info));
+                         "gdbarch_find_by_info: info.target_info.tdep_info %s\n",
+                         host_address_to_string (info.target_info.tdep_info));
     }
 
   /* Find the tdep code that knows about this architecture.  */
index 802c41fe7257aea18a0dba46896aa7e6a33fd81f..9fae6e1bab9f15893a7aa57fd56f38343c83b4d9 100644 (file)
@@ -825,7 +825,7 @@ i386_linux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
 {
   struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
   const struct target_desc *tdesc = info.target_desc;
-  struct tdesc_arch_data *tdesc_data = info.tdesc_data;
+  struct tdesc_arch_data *tdesc_data = info.target_info.tdesc_data;
   const struct tdesc_feature *feature;
   int valid_p;
 
index a6994aaf1266ba4e47c06f694dad2d320c3c758f..9fb866713ea88f5b6e668e89c4bbd3ebc0757ac0 100644 (file)
@@ -8604,7 +8604,7 @@ i386_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
   /* Hook in ABI-specific overrides, if they have been registered.
      Note: If INFO specifies a 64 bit arch, this is where we turn
      a 32-bit i386 into a 64-bit amd64.  */
-  info.tdesc_data = tdesc_data;
+  info.target_info.tdesc_data = tdesc_data;
   gdbarch_init_osabi (info, gdbarch);
 
   if (!i386_validate_tdesc_p (tdep, tdesc_data))
index 575575fe423974b7e5608940df055420ea11549b..a5ede2bcff6f3570031237f1665e570aa3117765 100644 (file)
@@ -1531,7 +1531,7 @@ mips_linux_init_abi (struct gdbarch_info info,
 {
   struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
   enum mips_abi abi = mips_abi (gdbarch);
-  struct tdesc_arch_data *tdesc_data = info.tdesc_data;
+  struct tdesc_arch_data *tdesc_data = info.target_info.tdesc_data;
 
   linux_init_abi (info, gdbarch);
 
index 5e0a60625bf1627a6302873644a5e502dad22631..87f3861c5f71bef7de7cd40c74b52d67bac5bd39 100644 (file)
@@ -8769,7 +8769,7 @@ mips_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
   mips_register_g_packet_guesses (gdbarch);
 
   /* Hook in OS ABI-specific overrides, if they have been registered.  */
-  info.tdesc_data = tdesc_data;
+  info.target_info.tdesc_data = tdesc_data;
   gdbarch_init_osabi (info, gdbarch);
 
   /* The hook may have adjusted num_regs, fetch the final value and
index b616cc9b2cedcdc56c53a20279e1ab7cc53c6248..939c6593ae8545e86bd46ecbfd25c5639c755cb2 100644 (file)
@@ -2130,7 +2130,7 @@ nds32_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
   nds32_add_reggroups (gdbarch);
 
   /* Hook in ABI-specific overrides, if they have been registered.  */
-  info.tdesc_data = tdesc_data;
+  info.target_info.tdesc_data = tdesc_data;
   gdbarch_init_osabi (info, gdbarch);
 
   /* Override tdesc_register callbacks for system registers.  */
index 817a002715aaff9e890e354b109ff3e8c737697c..6634a5727957f5ebb6f06f9c790c4defc828920b 100644 (file)
@@ -1424,7 +1424,7 @@ ppu2spu_sniffer (const struct frame_unwind *self,
       info.bfd_arch_info = bfd_lookup_arch (bfd_arch_spu, bfd_mach_spu);
       info.byte_order = BFD_ENDIAN_BIG;
       info.osabi = GDB_OSABI_LINUX;
-      info.id = &data.id;
+      info.target_info.id = &data.id;
       data.gdbarch = gdbarch_find_by_info (info);
       if (!data.gdbarch)
        return 0;
@@ -1729,7 +1729,7 @@ ppc_linux_init_abi (struct gdbarch_info info,
                     struct gdbarch *gdbarch)
 {
   struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
-  struct tdesc_arch_data *tdesc_data = info.tdesc_data;
+  struct tdesc_arch_data *tdesc_data = info.target_info.tdesc_data;
   static const char *const stap_integer_prefixes[] = { "i", NULL };
   static const char *const stap_register_indirection_prefixes[] = { "(",
                                                                    NULL };
index 5a3e65f211b71b5f380d3445055d3e2a32b55714..d3fe416f8b33f8684b16f6b2b99311e872d6a064 100644 (file)
@@ -6416,7 +6416,7 @@ rs6000_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
 
   /* Hook in ABI-specific overrides, if they have been registered.  */
   info.target_desc = tdesc;
-  info.tdesc_data = tdesc_data;
+  info.target_info.tdesc_data = tdesc_data;
   gdbarch_init_osabi (info, gdbarch);
 
   switch (info.osabi)
index e962824ca0471b3279d0dcc2fac82068a0f0d401..7853b36c223af4b3dea96f28382e345486618c6d 100644 (file)
@@ -6932,7 +6932,7 @@ s390_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
   struct gdbarch_tdep *tdep = s390_gdbarch_tdep_alloc ();
   struct gdbarch *gdbarch = gdbarch_alloc (&info, tdep);
   struct tdesc_arch_data *tdesc_data = tdesc_data_alloc ();
-  info.tdesc_data = tdesc_data;
+  info.target_info.tdesc_data = tdesc_data;
 
   set_gdbarch_believe_pcc_promotion (gdbarch, 0);
   set_gdbarch_char_signed (gdbarch, 0);
index 7a50a8d4a97dd15e8ed0515ad03422c19edd9e01..c46788c3fbc2b0193f7cf77161fe9b42eaddd44a 100644 (file)
@@ -1925,7 +1925,7 @@ sparc32_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
         }
 
       /* Target description may have changed. */
-      info.tdesc_data = tdesc_data;
+      info.target_info.tdesc_data = tdesc_data;
       tdesc_use_registers (gdbarch, tdesc, tdesc_data);
     }
 
index 7e642d663a420b6457dc4948abb911039613e727..8111b2804a1b9f283a17875dfa1588b40252b3e5 100644 (file)
@@ -143,7 +143,7 @@ spu_gdbarch (int spufs_fd)
   info.bfd_arch_info = bfd_lookup_arch (bfd_arch_spu, bfd_mach_spu);
   info.byte_order = BFD_ENDIAN_BIG;
   info.osabi = GDB_OSABI_LINUX;
-  info.id = &spufs_fd;
+  info.target_info.id = &spufs_fd;
   return gdbarch_find_by_info (info);
 }
 
index 6ae37f58c7a46754b45bee6664ef5404a1c52260..f72de041ed6278345257650b5c1c176a73a6a358 100644 (file)
@@ -2644,8 +2644,8 @@ spu_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
   int id = -1;
 
   /* Which spufs ID was requested as address space?  */
-  if (info.id)
-    id = *info.id;
+  if (info.target_info.id)
+    id = *info.target_info.id;
   /* For objfile architectures of SPU solibs, decode the ID from the name.
      This assumes the filename convention employed by solib-spu.c.  */
   else if (info.abfd)