X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=gdb%2Falpha-mdebug-tdep.c;h=ec11bc45423e26da1778a11959ce0db833ec36c3;hb=e05523bd2411bac0277da73556f4d01f6c7448aa;hp=d41f66a797e425c2a6df1f979abbf75610464078;hpb=0b30217134add051e159a192066a1e568ebd837f;p=binutils-gdb.git diff --git a/gdb/alpha-mdebug-tdep.c b/gdb/alpha-mdebug-tdep.c index d41f66a797e..ec11bc45423 100644 --- a/gdb/alpha-mdebug-tdep.c +++ b/gdb/alpha-mdebug-tdep.c @@ -1,5 +1,5 @@ /* Target-dependent mdebug code for the ALPHA architecture. - Copyright (C) 1993-2003, 2007-2012 Free Software Foundation, Inc. + Copyright (C) 1993-2022 Free Software Foundation, Inc. This file is part of GDB. @@ -23,22 +23,21 @@ #include "symtab.h" #include "gdbcore.h" #include "block.h" -#include "gdb_assert.h" -#include "gdb_string.h" #include "trad-frame.h" #include "alpha-tdep.h" #include "mdebugread.h" +#include "gdbarch.h" /* FIXME: Some of this code should perhaps be merged with mips. */ /* *INDENT-OFF* */ /* Layout of a stack frame on the alpha: - | | + | | pdr members: | 7th ... nth arg, | - | `pushed' by caller. | - | | + | `pushed' by caller. | + | | ----------------|-------------------------------|<-- old_sp == vfp ^ ^ ^ ^ | | | | | | | | @@ -73,7 +72,7 @@ | | called procedure. | v | | -------------|-------------------------------|<-- sp - | | + | | */ /* *INDENT-ON* */ @@ -93,10 +92,10 @@ static struct mdebug_extra_func_info * find_proc_desc (CORE_ADDR pc) { - struct block *b = block_for_pc (pc); + const struct block *b = block_for_pc (pc); struct mdebug_extra_func_info *proc_desc = NULL; struct symbol *sym = NULL; - char *sh_name = NULL; + const char *sh_name = NULL; if (b) { @@ -109,7 +108,8 @@ find_proc_desc (CORE_ADDR pc) symbol reading. */ sym = NULL; else - sym = lookup_symbol (MDEBUG_EFI_SYMBOL_NAME, b, LABEL_DOMAIN, 0); + sym = lookup_symbol (MDEBUG_EFI_SYMBOL_NAME, b, LABEL_DOMAIN, + 0).symbol; } if (sym) @@ -117,7 +117,7 @@ find_proc_desc (CORE_ADDR pc) proc_desc = (struct mdebug_extra_func_info *) SYMBOL_VALUE_BYTES (sym); /* Correct incorrect setjmp procedure descriptor from the library - to make backtrace through setjmp work. */ + to make backtrace through setjmp work. */ if (proc_desc->pdr.pcreg == 0 && strcmp (sh_name, "setjmp") == 0) { @@ -154,7 +154,7 @@ alpha_mdebug_after_prologue (CORE_ADDR pc, if (proc_desc) { /* If function is frameless, then we need to do it the hard way. I - strongly suspect that frameless always means prologueless... */ + strongly suspect that frameless always means prologueless... */ if (alpha_mdebug_frameless (proc_desc)) return 0; } @@ -180,7 +180,7 @@ struct alpha_mdebug_unwind_cache { struct mdebug_extra_func_info *proc_desc; CORE_ADDR vfp; - struct trad_frame_saved_reg *saved_regs; + trad_frame_saved_reg *saved_regs; }; /* Extract all of the information about the frame from PROC_DESC @@ -198,7 +198,7 @@ alpha_mdebug_frame_unwind_cache (struct frame_info *this_frame, int ireg, returnreg; if (*this_prologue_cache) - return *this_prologue_cache; + return (struct alpha_mdebug_unwind_cache *) *this_prologue_cache; info = FRAME_OBSTACK_ZALLOC (struct alpha_mdebug_unwind_cache); *this_prologue_cache = info; @@ -231,14 +231,14 @@ alpha_mdebug_frame_unwind_cache (struct frame_info *this_frame, /* Clear bit for RA so we don't save it again later. */ mask &= ~(1 << returnreg); - info->saved_regs[returnreg].addr = reg_position; + info->saved_regs[returnreg].set_addr (reg_position); reg_position += 8; } for (ireg = 0; ireg <= 31; ++ireg) if (mask & (1 << ireg)) { - info->saved_regs[ireg].addr = reg_position; + info->saved_regs[ireg].set_addr (reg_position); reg_position += 8; } @@ -248,14 +248,14 @@ alpha_mdebug_frame_unwind_cache (struct frame_info *this_frame, for (ireg = 0; ireg <= 31; ++ireg) if (mask & (1 << ireg)) { - info->saved_regs[ALPHA_FP0_REGNUM + ireg].addr = reg_position; + info->saved_regs[ALPHA_FP0_REGNUM + ireg].set_addr (reg_position); reg_position += 8; } /* The stack pointer of the previous frame is computed by popping the current stack frame. */ - if (!trad_frame_addr_p (info->saved_regs, ALPHA_SP_REGNUM)) - trad_frame_set_value (info->saved_regs, ALPHA_SP_REGNUM, vfp); + if (!info->saved_regs[ALPHA_SP_REGNUM].is_addr ()) + info->saved_regs[ALPHA_SP_REGNUM].set_value (vfp); return info; } @@ -308,8 +308,8 @@ alpha_mdebug_max_frame_size_exceeded (struct mdebug_extra_func_info *proc_desc) static int alpha_mdebug_frame_sniffer (const struct frame_unwind *self, - struct frame_info *this_frame, - void **this_cache) + struct frame_info *this_frame, + void **this_cache) { CORE_ADDR pc = get_frame_address_in_block (this_frame); struct mdebug_extra_func_info *proc_desc; @@ -333,7 +333,9 @@ alpha_mdebug_frame_sniffer (const struct frame_unwind *self, return 1; } -static const struct frame_unwind alpha_mdebug_frame_unwind = { +static const struct frame_unwind alpha_mdebug_frame_unwind = +{ + "alpha mdebug", NORMAL_FRAME, default_frame_unwind_stop_reason, alpha_mdebug_frame_this_id, @@ -403,8 +405,6 @@ alpha_mdebug_frame_base_sniffer (struct frame_info *this_frame) void alpha_mdebug_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) { - struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); - frame_unwind_append_unwinder (gdbarch, &alpha_mdebug_frame_unwind); frame_base_append_sniffer (gdbarch, alpha_mdebug_frame_base_sniffer); }