X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;ds=sidebyside;f=gdb%2Fmicroblaze-tdep.c;h=5309da58cc29168547fe871e16bfadd5bf97fbe6;hb=aa95b2d43883666937d31335d0178d2218d9c9aa;hp=edabe9eb5431c6474f340b3c65c8f66b3c7071fa;hpb=27087b7f6ce8c6d304b149df2484436d97e6334b;p=binutils-gdb.git diff --git a/gdb/microblaze-tdep.c b/gdb/microblaze-tdep.c index edabe9eb543..5309da58cc2 100644 --- a/gdb/microblaze-tdep.c +++ b/gdb/microblaze-tdep.c @@ -1,6 +1,6 @@ /* Target-dependent code for Xilinx MicroBlaze. - Copyright (C) 2009-2020 Free Software Foundation, Inc. + Copyright (C) 2009-2021 Free Software Foundation, Inc. This file is part of GDB. @@ -302,7 +302,7 @@ microblaze_analyze_prologue (struct gdbarch *gdbarch, CORE_ADDR pc, else if (IS_SETUP_FP(op, ra, rb)) { /* We have a frame pointer. Note the register which is - acting as the frame pointer. */ + acting as the frame pointer. */ flags |= MICROBLAZE_MY_FRAME_IN_FP; flags &= ~MICROBLAZE_MY_FRAME_IN_SP; cache->fp_regnum = rd; @@ -478,9 +478,9 @@ microblaze_frame_prev_register (struct frame_info *this_frame, if (cache->frameless_p) { if (regnum == MICROBLAZE_PC_REGNUM) - regnum = 15; + regnum = 15; if (regnum == MICROBLAZE_SP_REGNUM) - regnum = 1; + regnum = 1; return trad_frame_get_prev_register (this_frame, cache->saved_regs, regnum); } @@ -492,6 +492,7 @@ microblaze_frame_prev_register (struct frame_info *this_frame, static const struct frame_unwind microblaze_frame_unwind = { + "microblaze prologue", NORMAL_FRAME, default_frame_unwind_stop_reason, microblaze_frame_this_id, @@ -638,20 +639,19 @@ static void microblaze_register_g_packet_guesses (struct gdbarch *gdbarch) { register_remote_g_packet_guess (gdbarch, - 4 * MICROBLAZE_NUM_CORE_REGS, - tdesc_microblaze); + 4 * MICROBLAZE_NUM_CORE_REGS, + tdesc_microblaze); register_remote_g_packet_guess (gdbarch, - 4 * MICROBLAZE_NUM_REGS, - tdesc_microblaze_with_stack_protect); + 4 * MICROBLAZE_NUM_REGS, + tdesc_microblaze_with_stack_protect); } static struct gdbarch * microblaze_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) { - struct gdbarch_tdep *tdep; struct gdbarch *gdbarch; - struct tdesc_arch_data *tdesc_data = NULL; + tdesc_arch_data_up tdesc_data; const struct target_desc *tdesc = info.target_desc; /* If there is already a candidate, use it. */ @@ -669,37 +669,34 @@ microblaze_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) int i; feature = tdesc_find_feature (tdesc, - "org.gnu.gdb.microblaze.core"); + "org.gnu.gdb.microblaze.core"); if (feature == NULL) - return NULL; + return NULL; tdesc_data = tdesc_data_alloc (); valid_p = 1; for (i = 0; i < MICROBLAZE_NUM_CORE_REGS; i++) - valid_p &= tdesc_numbered_register (feature, tdesc_data, i, - microblaze_register_names[i]); + valid_p &= tdesc_numbered_register (feature, tdesc_data.get (), i, + microblaze_register_names[i]); feature = tdesc_find_feature (tdesc, - "org.gnu.gdb.microblaze.stack-protect"); + "org.gnu.gdb.microblaze.stack-protect"); if (feature != NULL) - { - valid_p = 1; - valid_p &= tdesc_numbered_register (feature, tdesc_data, - MICROBLAZE_SLR_REGNUM, - "rslr"); - valid_p &= tdesc_numbered_register (feature, tdesc_data, - MICROBLAZE_SHR_REGNUM, - "rshr"); - } + { + valid_p = 1; + valid_p &= tdesc_numbered_register (feature, tdesc_data.get (), + MICROBLAZE_SLR_REGNUM, + "rslr"); + valid_p &= tdesc_numbered_register (feature, tdesc_data.get (), + MICROBLAZE_SHR_REGNUM, + "rshr"); + } if (!valid_p) - { - tdesc_data_cleanup (tdesc_data); - return NULL; - } + return NULL; } /* Allocate space for the new architecture. */ - tdep = XCNEW (struct gdbarch_tdep); + microblaze_gdbarch_tdep *tdep = new microblaze_gdbarch_tdep; gdbarch = gdbarch_alloc (&info, tdep); set_gdbarch_long_double_bit (gdbarch, 128); @@ -748,7 +745,7 @@ microblaze_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) frame_unwind_append_unwinder (gdbarch, µblaze_frame_unwind); frame_base_append_sniffer (gdbarch, dwarf2_frame_base_sniffer); if (tdesc_data != NULL) - tdesc_use_registers (gdbarch, tdesc, tdesc_data); + tdesc_use_registers (gdbarch, tdesc, std::move (tdesc_data)); return gdbarch; }