Fix a new warning on Cygwin
[binutils-gdb.git] / gdb / msp430-tdep.c
index c1b0c4c2e916bff093a3ff0c44b713a00e97e63f..28268a95139b50baf1335f1c84265069dbe456d7 100644 (file)
@@ -1,7 +1,7 @@
 /* Target-dependent code for the Texas Instruments MSP430 for GDB, the
    GNU debugger.
 
-   Copyright (C) 2012-2021 Free Software Foundation, Inc.
+   Copyright (C) 2012-2022 Free Software Foundation, Inc.
 
    Contributed by Red Hat, Inc.
 
@@ -34,6 +34,7 @@
 #include "gdbcore.h"
 #include "dwarf2/frame.h"
 #include "reggroups.h"
+#include "gdbarch.h"
 
 #include "elf/msp430.h"
 #include "opcode/msp430-decode.h"
@@ -104,19 +105,19 @@ enum
 
 /* Architecture specific data.  */
 
-struct gdbarch_tdep
+struct msp430_gdbarch_tdep : gdbarch_tdep
 {
   /* The ELF header flags specify the multilib used.  */
-  int elf_flags;
+  int elf_flags = 0;
 
   /* One of MSP_ISA_MSP430 or MSP_ISA_MSP430X.  */
-  int isa;
+  int isa = 0;
 
   /* One of MSP_SMALL_CODE_MODEL or MSP_LARGE_CODE_MODEL.  If, at
      some point, we support different data models too, we'll probably
      structure things so that we can combine values using logical
      "or".  */
-  int code_model;
+  int code_model = 0;
 };
 
 /* This structure holds the results of a prologue analysis.  */
@@ -202,7 +203,7 @@ msp430_register_name (struct gdbarch *gdbarch, int regnr)
 
 static int
 msp430_register_reggroup_p (struct gdbarch *gdbarch, int regnum,
-                           struct reggroup *group)
+                           const struct reggroup *group)
 {
   if (group == all_reggroup)
     return 1;
@@ -340,7 +341,8 @@ msp430_analyze_prologue (struct gdbarch *gdbarch, CORE_ADDR start_pc,
   int rn;
   pv_t reg[MSP430_NUM_TOTAL_REGS];
   CORE_ADDR after_last_frame_setup_insn = start_pc;
-  int code_model = gdbarch_tdep (gdbarch)->code_model;
+  msp430_gdbarch_tdep *tdep = (msp430_gdbarch_tdep *) gdbarch_tdep (gdbarch);
+  int code_model = tdep->code_model;
   int sz;
 
   memset (result, 0, sizeof (*result));
@@ -568,7 +570,8 @@ msp430_return_value (struct gdbarch *gdbarch,
 {
   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
   LONGEST valtype_len = TYPE_LENGTH (valtype);
-  int code_model = gdbarch_tdep (gdbarch)->code_model;
+  msp430_gdbarch_tdep *tdep = (msp430_gdbarch_tdep *) gdbarch_tdep (gdbarch);
+  int code_model = tdep->code_model;
 
   if (TYPE_LENGTH (valtype) > 8
       || valtype->code () == TYPE_CODE_STRUCT
@@ -648,7 +651,8 @@ msp430_push_dummy_call (struct gdbarch *gdbarch, struct value *function,
   int write_pass;
   int sp_off = 0;
   CORE_ADDR cfa;
-  int code_model = gdbarch_tdep (gdbarch)->code_model;
+  msp430_gdbarch_tdep *tdep = (msp430_gdbarch_tdep *) gdbarch_tdep (gdbarch);
+  int code_model = tdep->code_model;
 
   struct type *func_type = value_type (function);
 
@@ -766,8 +770,7 @@ msp430_push_dummy_call (struct gdbarch *gdbarch, struct value *function,
 
   /* Push the return address.  */
   {
-    int sz = (gdbarch_tdep (gdbarch)->code_model == MSP_SMALL_CODE_MODEL)
-      ? 2 : 4;
+    int sz = tdep->code_model == MSP_SMALL_CODE_MODEL ? 2 : 4;
     sp = sp - sz;
     write_memory_unsigned_integer (sp, sz, byte_order, bp_addr);
   }
@@ -811,7 +814,8 @@ msp430_skip_trampoline_code (struct frame_info *frame, CORE_ADDR pc)
 
   stub_name = bms.minsym->linkage_name ();
 
-  if (gdbarch_tdep (gdbarch)->code_model == MSP_SMALL_CODE_MODEL
+  msp430_gdbarch_tdep *tdep = (msp430_gdbarch_tdep *) gdbarch_tdep (gdbarch);
+  if (tdep->code_model == MSP_SMALL_CODE_MODEL
       && msp430_in_return_stub (gdbarch, pc, stub_name))
     {
       CORE_ADDR sp = get_frame_register_unsigned (frame, MSP430_SP_REGNUM);
@@ -830,7 +834,6 @@ static struct gdbarch *
 msp430_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
 {
   struct gdbarch *gdbarch;
-  struct gdbarch_tdep *tdep;
   int elf_flags, isa, code_model;
 
   /* Extract the elf_flags if available.  */
@@ -873,7 +876,8 @@ msp430_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
          struct gdbarch *ca = get_current_arch ();
          if (ca && gdbarch_bfd_arch_info (ca)->arch == bfd_arch_msp430)
            {
-             struct gdbarch_tdep *ca_tdep = gdbarch_tdep (ca);
+             msp430_gdbarch_tdep *ca_tdep
+               = (msp430_gdbarch_tdep *) gdbarch_tdep (ca);
 
              elf_flags = ca_tdep->elf_flags;
              isa = ca_tdep->isa;
@@ -899,7 +903,8 @@ msp430_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
        arches != NULL;
        arches = gdbarch_list_lookup_by_info (arches->next, &info))
     {
-      struct gdbarch_tdep *candidate_tdep = gdbarch_tdep (arches->gdbarch);
+      msp430_gdbarch_tdep *candidate_tdep
+       = (msp430_gdbarch_tdep *) gdbarch_tdep (arches->gdbarch);
 
       if (candidate_tdep->elf_flags != elf_flags
          || candidate_tdep->isa != isa
@@ -911,7 +916,7 @@ msp430_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
 
   /* None found, create a new architecture from the information
      provided.  */
-  tdep = XCNEW (struct gdbarch_tdep);
+  msp430_gdbarch_tdep *tdep = new msp430_gdbarch_tdep;
   gdbarch = gdbarch_alloc (&info, tdep);
   tdep->elf_flags = elf_flags;
   tdep->isa = isa;