gdb/testsuite/dap: prefix some procs with _
[binutils-gdb.git] / gdb / v850-tdep.c
index 70f6d42a95b1651763e6e54f80d3557abd8e9b34..cc7da907a5e571d526e4263e36b1b3a4a5c72692 100644 (file)
@@ -1,6 +1,6 @@
 /* Target-dependent code for the NEC V850 for GDB, the GNU debugger.
 
-   Copyright (C) 1996-2021 Free Software Foundation, Inc.
+   Copyright (C) 1996-2023 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -32,6 +32,7 @@
 #include "osabi.h"
 #include "elf-bfd.h"
 #include "elf/v850.h"
+#include "gdbarch.h"
 
 enum
   {
@@ -264,7 +265,7 @@ enum v850_abi
 
 /* Architecture specific data.  */
 
-struct v850_gdbarch_tdep : gdbarch_tdep
+struct v850_gdbarch_tdep : gdbarch_tdep_base
 {
   /* Fields from the ELF header.  */
   int e_flags = 0;
@@ -311,8 +312,7 @@ v850_register_name (struct gdbarch *gdbarch, int regnum)
     "sr24", "sr25", "sr26", "sr27", "sr28", "sr29", "sr30", "sr31",
     "pc", "fp"
   };
-  if (regnum < 0 || regnum > E_NUM_OF_V850_REGS)
-    return NULL;
+  gdb_static_assert (E_NUM_OF_V850_REGS == ARRAY_SIZE (v850_reg_names));
   return v850_reg_names[regnum];
 }
 
@@ -331,8 +331,7 @@ v850e_register_name (struct gdbarch *gdbarch, int regnum)
     "sr24", "sr25", "sr26", "sr27", "sr28", "sr29", "sr30", "sr31",
     "pc", "fp"
   };
-  if (regnum < 0 || regnum > E_NUM_OF_V850E_REGS)
-    return NULL;
+  gdb_static_assert (E_NUM_OF_V850E_REGS == ARRAY_SIZE (v850e_reg_names));
   return v850e_reg_names[regnum];
 }
 
@@ -375,8 +374,8 @@ v850e2_register_name (struct gdbarch *gdbarch, int regnum)
     "", "", "", "", "", "", "", "",
     "", "", "", "fpspc"
   };
-  if (regnum < 0 || regnum >= E_NUM_OF_V850E2_REGS)
-    return NULL;
+  if (regnum >= E_NUM_OF_V850E2_REGS)
+    return "";
   return v850e2_reg_names[regnum];
 }
 
@@ -478,8 +477,8 @@ v850e3v5_register_name (struct gdbarch *gdbarch, int regnum)
     "vr24", "vr25", "vr26", "vr27", "vr28", "vr29", "vr30", "vr31",
   };
 
-  if (regnum < 0 || regnum >= E_NUM_OF_V850E3V5_REGS)
-    return NULL;
+  gdb_static_assert (E_NUM_OF_V850E3V5_REGS
+                    == ARRAY_SIZE (v850e3v5_reg_names));
   return v850e3v5_reg_names[regnum];
 }
 
@@ -510,18 +509,18 @@ v850_use_struct_convention (struct gdbarch *gdbarch, struct type *type)
 {
   int i;
   struct type *fld_type, *tgt_type;
-  v850_gdbarch_tdep *tdep = (v850_gdbarch_tdep *) gdbarch_tdep (gdbarch);
+  v850_gdbarch_tdep *tdep = gdbarch_tdep<v850_gdbarch_tdep> (gdbarch);
 
   if (tdep->abi == V850_ABI_RH850)
     {
-      if (v850_type_is_scalar (type) && TYPE_LENGTH(type) <= 8)
+      if (v850_type_is_scalar (type) && type->length () <= 8)
        return 0;
 
       /* Structs are never returned in registers for this ABI.  */
       return 1;
     }
   /* 1. The value is greater than 8 bytes -> returned by copying.  */
-  if (TYPE_LENGTH (type) > 8)
+  if (type->length () > 8)
     return 1;
 
   /* 2. The value is a single basic type -> returned in register.  */
@@ -536,13 +535,13 @@ v850_use_struct_convention (struct gdbarch *gdbarch, struct type *type)
        && type->num_fields () == 1)
     {
       fld_type = type->field (0).type ();
-      if (v850_type_is_scalar (fld_type) && TYPE_LENGTH (fld_type) >= 4)
+      if (v850_type_is_scalar (fld_type) && fld_type->length () >= 4)
        return 0;
 
       if (fld_type->code () == TYPE_CODE_ARRAY)
        {
-         tgt_type = TYPE_TARGET_TYPE (fld_type);
-         if (v850_type_is_scalar (tgt_type) && TYPE_LENGTH (tgt_type) >= 4)
+         tgt_type = fld_type->target_type ();
+         if (v850_type_is_scalar (tgt_type) && tgt_type->length () >= 4)
            return 0;
        }
     }
@@ -552,16 +551,16 @@ v850_use_struct_convention (struct gdbarch *gdbarch, struct type *type)
      register.  */
   if (type->code () == TYPE_CODE_STRUCT
       && v850_type_is_scalar (type->field (0).type ())
-      && TYPE_LENGTH (type->field (0).type ()) == 4)
+      && type->field (0).type ()->length () == 4)
     {
       for (i = 1; i < type->num_fields (); ++i)
        {
          fld_type = type->field (0).type ();
          if (fld_type->code () == TYPE_CODE_ARRAY)
            {
-             tgt_type = TYPE_TARGET_TYPE (fld_type);
-             if (TYPE_LENGTH (tgt_type) > 0
-                 && TYPE_LENGTH (fld_type) / TYPE_LENGTH (tgt_type) > 2)
+             tgt_type = fld_type->target_type ();
+             if (tgt_type->length () > 0
+                 && fld_type->length () / tgt_type->length () > 2)
                return 1;
            }
        }
@@ -977,7 +976,7 @@ v850_eight_byte_align_p (struct type *type)
   type = check_typedef (type);
 
   if (v850_type_is_scalar (type))
-    return (TYPE_LENGTH (type) == 8);
+    return (type->length () == 8);
   else
     {
       int i;
@@ -1022,7 +1021,7 @@ v850_push_dummy_call (struct gdbarch *gdbarch,
   int argnum;
   int arg_space = 0;
   int stack_offset;
-  v850_gdbarch_tdep *tdep = (v850_gdbarch_tdep *) gdbarch_tdep (gdbarch);
+  v850_gdbarch_tdep *tdep = gdbarch_tdep<v850_gdbarch_tdep> (gdbarch);
 
   if (tdep->abi == V850_ABI_RH850)
     stack_offset = 0;
@@ -1038,7 +1037,7 @@ v850_push_dummy_call (struct gdbarch *gdbarch,
 
   /* Now make space on the stack for the args.  */
   for (argnum = 0; argnum < nargs; argnum++)
-    arg_space += ((TYPE_LENGTH (value_type (args[argnum])) + 3) & ~3);
+    arg_space += ((value_type (args[argnum])->length () + 3) & ~3);
   sp -= arg_space + stack_offset;
 
   argreg = E_ARG0_REGNUM;
@@ -1057,7 +1056,7 @@ v850_push_dummy_call (struct gdbarch *gdbarch,
 
       if (!v850_type_is_scalar (value_type (*args))
          && tdep->abi == V850_ABI_GCC
-         && TYPE_LENGTH (value_type (*args)) > E_MAX_RETTYPE_SIZE_IN_REGS)
+         && value_type (*args)->length () > E_MAX_RETTYPE_SIZE_IN_REGS)
        {
          store_unsigned_integer (valbuf, 4, byte_order,
                                  value_address (*args));
@@ -1066,7 +1065,7 @@ v850_push_dummy_call (struct gdbarch *gdbarch,
        }
       else
        {
-         len = TYPE_LENGTH (value_type (*args));
+         len = value_type (*args)->length ();
          val = (gdb_byte *) value_contents (*args).data ();
        }
 
@@ -1117,7 +1116,7 @@ v850_extract_return_value (struct type *type, struct regcache *regcache,
 {
   struct gdbarch *gdbarch = regcache->arch ();
   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
-  int len = TYPE_LENGTH (type);
+  int len = type->length ();
 
   if (len <= v850_reg_size)
     {
@@ -1144,7 +1143,7 @@ v850_store_return_value (struct type *type, struct regcache *regcache,
 {
   struct gdbarch *gdbarch = regcache->arch ();
   enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
-  int len = TYPE_LENGTH (type);
+  int len = type->length ();
 
   if (len <= v850_reg_size)
       regcache_cooked_write_unsigned
@@ -1213,7 +1212,7 @@ v850_sw_breakpoint_from_kind (struct gdbarch *gdbarch, int kind, int *size)
 }
 
 static struct v850_frame_cache *
-v850_alloc_frame_cache (struct frame_info *this_frame)
+v850_alloc_frame_cache (frame_info_ptr this_frame)
 {
   struct v850_frame_cache *cache;
 
@@ -1232,7 +1231,7 @@ v850_alloc_frame_cache (struct frame_info *this_frame)
 }
 
 static struct v850_frame_cache *
-v850_frame_cache (struct frame_info *this_frame, void **this_cache)
+v850_frame_cache (frame_info_ptr this_frame, void **this_cache)
 {
   struct gdbarch *gdbarch = get_frame_arch (this_frame);
   struct v850_frame_cache *cache;
@@ -1298,7 +1297,7 @@ v850_frame_cache (struct frame_info *this_frame, void **this_cache)
 
 
 static struct value *
-v850_frame_prev_register (struct frame_info *this_frame,
+v850_frame_prev_register (frame_info_ptr this_frame,
                          void **this_cache, int regnum)
 {
   struct v850_frame_cache *cache = v850_frame_cache (this_frame, this_cache);
@@ -1309,7 +1308,7 @@ v850_frame_prev_register (struct frame_info *this_frame,
 }
 
 static void
-v850_frame_this_id (struct frame_info *this_frame, void **this_cache,
+v850_frame_this_id (frame_info_ptr this_frame, void **this_cache,
                    struct frame_id *this_id)
 {
   struct v850_frame_cache *cache = v850_frame_cache (this_frame, this_cache);
@@ -1332,7 +1331,7 @@ static const struct frame_unwind v850_frame_unwind = {
 };
 
 static CORE_ADDR
-v850_frame_base_address (struct frame_info *this_frame, void **this_cache)
+v850_frame_base_address (frame_info_ptr this_frame, void **this_cache)
 {
   struct v850_frame_cache *cache = v850_frame_cache (this_frame, this_cache);
 
@@ -1349,7 +1348,6 @@ static const struct frame_base v850_frame_base = {
 static struct gdbarch *
 v850_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
 {
-  struct gdbarch *gdbarch;
   int e_flags, e_machine;
 
   /* Extract the elf_flags if available.  */
@@ -1373,7 +1371,7 @@ v850_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
        arches = gdbarch_list_lookup_by_info (arches->next, &info))
     {
       v850_gdbarch_tdep *tdep
-       = (v850_gdbarch_tdep *) gdbarch_tdep (arches->gdbarch);
+       = gdbarch_tdep<v850_gdbarch_tdep> (arches->gdbarch);
 
       if (tdep->e_flags != e_flags || tdep->e_machine != e_machine)
        continue;
@@ -1381,7 +1379,10 @@ v850_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
       return arches->gdbarch;
     }
 
-  v850_gdbarch_tdep *tdep = new v850_gdbarch_tdep;
+  gdbarch *gdbarch
+    = gdbarch_alloc (&info, gdbarch_tdep_up (new v850_gdbarch_tdep));
+  v850_gdbarch_tdep *tdep = gdbarch_tdep<v850_gdbarch_tdep> (gdbarch);
+
   tdep->e_flags = e_flags;
   tdep->e_machine = e_machine;
 
@@ -1396,7 +1397,6 @@ v850_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
     }
 
   tdep->eight_byte_align = (tdep->e_flags & EF_RH850_DATA_ALIGN8) ? 1 : 0;
-  gdbarch = gdbarch_alloc (&info, tdep);
 
   switch (info.bfd_arch_info->mach)
     {
@@ -1464,6 +1464,6 @@ void _initialize_v850_tdep ();
 void
 _initialize_v850_tdep ()
 {
-  register_gdbarch_init (bfd_arch_v850, v850_gdbarch_init);
-  register_gdbarch_init (bfd_arch_v850_rh850, v850_gdbarch_init);
+  gdbarch_register (bfd_arch_v850, v850_gdbarch_init);
+  gdbarch_register (bfd_arch_v850_rh850, v850_gdbarch_init);
 }