/* Target-dependent code for the NDS32 architecture, for GDB.
- Copyright (C) 2013-2020 Free Software Foundation, Inc.
+ Copyright (C) 2013-2021 Free Software Foundation, Inc.
Contributed by Andes Technology Corporation.
This file is part of GDB.
#include "dis-asm.h"
#include "user-regs.h"
#include "elf-bfd.h"
-#include "dwarf2-frame.h"
+#include "dwarf2/frame.h"
#include "remote.h"
#include "target-descriptions.h"
static const struct frame_unwind nds32_frame_unwind =
{
+ "nds32 prologue",
NORMAL_FRAME,
default_frame_unwind_stop_reason,
nds32_frame_this_id,
static const struct frame_unwind nds32_epilogue_frame_unwind =
{
+ "nds32 epilogue",
NORMAL_FRAME,
default_frame_unwind_stop_reason,
nds32_epilogue_frame_this_id,
while (1)
{
t = check_typedef (t);
- typecode = TYPE_CODE (t);
+ typecode = t->code ();
if (typecode != TYPE_CODE_STRUCT)
break;
- else if (TYPE_NFIELDS (t) != 1)
+ else if (t->num_fields () != 1)
return 0;
else
- t = TYPE_FIELD_TYPE (t, 0);
+ t = t->field (0).type ();
}
return typecode == TYPE_CODE_FLT;
For ABI2FP+, the caller pushes only named arguments in registers
and pushes all unnamed arguments in stack. */
- if (abi_use_fpr && TYPE_VARARGS (func_type)
- && i >= TYPE_NFIELDS (func_type))
+ if (abi_use_fpr && func_type->has_varargs ()
+ && i >= func_type->num_fields ())
goto use_stack;
/* Try to use FPRs to pass arguments only when
struct gdbarch *gdbarch;
struct gdbarch_tdep *tdep;
struct gdbarch_list *best_arch;
- struct tdesc_arch_data *tdesc_data = NULL;
+ tdesc_arch_data_up tdesc_data;
const struct target_desc *tdesc = info.target_desc;
int elf_abi = E_NDS_ABI_AABI;
int fpu_freg = -1;
tdesc_data = tdesc_data_alloc ();
- if (!nds32_validate_tdesc_p (tdesc, tdesc_data, &fpu_freg, &use_pseudo_fsrs))
- {
- tdesc_data_cleanup (tdesc_data);
- return NULL;
- }
+ if (!nds32_validate_tdesc_p (tdesc, tdesc_data.get (), &fpu_freg,
+ &use_pseudo_fsrs))
+ return NULL;
/* Allocate space for the new architecture. */
tdep = XCNEW (struct gdbarch_tdep);
num_regs = NDS32_NUM_REGS + num_fdr_map[fpu_freg] + num_fsr_map[fpu_freg];
set_gdbarch_num_regs (gdbarch, num_regs);
- tdesc_use_registers (gdbarch, tdesc, tdesc_data);
+ tdesc_use_registers (gdbarch, tdesc, std::move (tdesc_data));
/* Cache the register number of fs0. */
if (fpu_freg != -1)
nds32_add_reggroups (gdbarch);
/* Hook in ABI-specific overrides, if they have been registered. */
- info.tdesc_data = tdesc_data;
+ info.tdesc_data = tdesc_data.get ();
gdbarch_init_osabi (info, gdbarch);
/* Override tdesc_register callbacks for system registers. */