/* Target-dependent code for FT32.
- Copyright (C) 2009-2020 Free Software Foundation, Inc.
+ Copyright (C) 2009-2022 Free Software Foundation, Inc.
This file is part of GDB.
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
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;
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
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";
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',
static const struct frame_unwind ft32_frame_unwind =
{
+ "ft32 prologue",
NORMAL_FRAME,
default_frame_unwind_stop_reason,
ft32_frame_this_id,
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;
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
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);
/* 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);
}