Add `set print repeats' tests for C/C++ arrays
[binutils-gdb.git] / gdb / ft32-tdep.c
index 404ec98484f670842d13bed55515aa7bcb8490cf..34703cc3e12542d5074a82fd4e347235c696cb88 100644 (file)
@@ -1,6 +1,6 @@
 /* Target-dependent code for FT32.
 
-   Copyright (C) 2009-2019 Free Software Foundation, Inc.
+   Copyright (C) 2009-2022 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #include "defs.h"
-
-/* Standard C++ includes.  */
-#include <algorithm>
-
-/* Local non-gdb includes.  */
-#include "arch-utils.h"
-#include "dis-asm.h"
-#include "frame-base.h"
-#include "frame-unwind.h"
 #include "frame.h"
-#include "ft32-tdep.h"
-#include "gdb/sim-ft32.h"
+#include "frame-unwind.h"
+#include "frame-base.h"
+#include "symtab.h"
+#include "gdbtypes.h"
 #include "gdbcmd.h"
 #include "gdbcore.h"
-#include "gdbtypes.h"
+#include "value.h"
 #include "inferior.h"
-#include "language.h"
+#include "symfile.h"
 #include "objfiles.h"
-#include "opcode/ft32.h"
 #include "osabi.h"
-#include "record.h"
+#include "language.h"
+#include "arch-utils.h"
 #include "regcache.h"
-#include "symfile.h"
-#include "symtab.h"
 #include "trad-frame.h"
-#include "value.h"
+#include "dis-asm.h"
+#include "record.h"
+
+#include "opcode/ft32.h"
+
+#include "ft32-tdep.h"
+#include "gdb/sim-ft32.h"
+#include <algorithm>
 
 #define RAM_BIAS  0x800000  /* Bias added to RAM addresses.  */
 
@@ -111,7 +109,10 @@ static struct type *
 ft32_register_type (struct gdbarch *gdbarch, int reg_nr)
 {
   if (reg_nr == FT32_PC_REGNUM)
-    return gdbarch_tdep (gdbarch)->pc_type;
+    {
+      ft32_gdbarch_tdep *tdep = (ft32_gdbarch_tdep *) gdbarch_tdep (gdbarch);
+      return tdep->pc_type;
+    }
   else if (reg_nr == FT32_SP_REGNUM || reg_nr == FT32_FP_REGNUM)
     return builtin_type (gdbarch)->builtin_data_ptr;
   else
@@ -146,7 +147,7 @@ ft32_store_return_value (struct type *type, struct regcache *regcache,
 
 static ULONGEST
 ft32_fetch_instruction (CORE_ADDR a, int *isize,
-                       enum bfd_endian byte_order)
+                       enum bfd_endian byte_order)
 {
   unsigned int sc[2];
   ULONGEST inst;
@@ -301,7 +302,7 @@ ft32_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR pc)
          /* Found a function.  */
          sym = lookup_symbol (func_name, NULL, VAR_DOMAIN, NULL).symbol;
          /* Don't use line number debug info for assembly source files.  */
-         if ((sym != NULL) && SYMBOL_LANGUAGE (sym) != language_asm)
+         if ((sym != NULL) && sym->language () != language_asm)
            {
              sal = find_pc_line (func_addr, 0);
              if (sal.end && sal.end < func_end)
@@ -343,7 +344,7 @@ ft32_pointer_to_address (struct gdbarch *gdbarch,
    This method maps DW_AT_address_class attributes to a
    type_instance_flag_value.  */
 
-static int
+static type_instance_flags
 ft32_address_class_type_flags (int byte_size, int dwarf2_addr_class)
 {
   /* The value 1 of the DW_AT_address_class attribute corresponds to the
@@ -359,7 +360,8 @@ ft32_address_class_type_flags (int byte_size, int dwarf2_addr_class)
    Convert a type_instance_flag_value to an address space qualifier.  */
 
 static const char*
-ft32_address_class_type_flags_to_name (struct gdbarch *gdbarch, int type_flags)
+ft32_address_class_type_flags_to_name (struct gdbarch *gdbarch,
+                                      type_instance_flags type_flags)
 {
   if (type_flags & TYPE_INSTANCE_FLAG_ADDRESS_CLASS_1)
     return "flash";
@@ -371,18 +373,18 @@ ft32_address_class_type_flags_to_name (struct gdbarch *gdbarch, int type_flags)
 
    Convert an address space qualifier to a type_instance_flag_value.  */
 
-static int
+static bool
 ft32_address_class_name_to_type_flags (struct gdbarch *gdbarch,
                                       const char* name,
-                                      int *type_flags_ptr)
+                                      type_instance_flags *type_flags_ptr)
 {
   if (strcmp (name, "flash") == 0)
     {
       *type_flags_ptr = TYPE_INSTANCE_FLAG_ADDRESS_CLASS_1;
-      return 1;
+      return true;
     }
   else
-    return 0;
+    return false;
 }
 
 /* Given a return value in `regbuf' with a type `valtype',
@@ -526,6 +528,7 @@ ft32_frame_prev_register (struct frame_info *this_frame,
 
 static const struct frame_unwind ft32_frame_unwind =
 {
+  "ft32 prologue",
   NORMAL_FRAME,
   default_frame_unwind_stop_reason,
   ft32_frame_this_id,
@@ -559,7 +562,6 @@ static struct gdbarch *
 ft32_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
 {
   struct gdbarch *gdbarch;
-  struct gdbarch_tdep *tdep;
   struct type *void_type;
   struct type *func_void_type;
 
@@ -569,7 +571,7 @@ ft32_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
     return arches->gdbarch;
 
   /* Allocate space for the new architecture.  */
-  tdep = XCNEW (struct gdbarch_tdep);
+  ft32_gdbarch_tdep *tdep = new ft32_gdbarch_tdep;
   gdbarch = gdbarch_alloc (&info, tdep);
 
   /* Create a type for PC.  We can't use builtin types here, as they may not
@@ -578,7 +580,8 @@ ft32_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
   func_void_type = make_function_type (void_type, NULL);
   tdep->pc_type = arch_pointer_type (gdbarch, 4 * TARGET_CHAR_BIT, NULL,
                                     func_void_type);
-  TYPE_INSTANCE_FLAGS (tdep->pc_type) |= TYPE_INSTANCE_FLAG_ADDRESS_CLASS_1;
+  tdep->pc_type->set_instance_flags (tdep->pc_type->instance_flags ()
+                                    | TYPE_INSTANCE_FLAG_ADDRESS_CLASS_1);
 
   set_gdbarch_num_regs (gdbarch, FT32_NUM_REGS);
   set_gdbarch_sp_regnum (gdbarch, FT32_SP_REGNUM);
@@ -618,8 +621,9 @@ ft32_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
 
 /* Register this machine's init routine.  */
 
+void _initialize_ft32_tdep ();
 void
-_initialize_ft32_tdep (void)
+_initialize_ft32_tdep ()
 {
   register_gdbarch_init (bfd_arch_ft32, ft32_gdbarch_init);
 }