X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=gdb%2Ftrad-frame.c;h=a6a84790a99208f2d20939c25b186267e07307a8;hb=refs%2Fheads%2Fconcurrent-displaced-stepping-2020-04-01;hp=a3484d2b3991fb3f6b8c441b0bf4ce1c4acf5364;hpb=498f740792fe0edd2955c5cee6bb864f60a5b173;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/trad-frame.c b/gdb/trad-frame.c index a3484d2b39..a6a84790a9 100644 --- a/gdb/trad-frame.c +++ b/gdb/trad-frame.c @@ -1,6 +1,6 @@ /* Traditional frame unwind support, for GDB the GNU Debugger. - Copyright (C) 2003-2018 Free Software Foundation, Inc. + Copyright (C) 2003-2020 Free Software Foundation, Inc. This file is part of GDB. @@ -24,6 +24,7 @@ #include "frame-unwind.h" #include "target.h" #include "value.h" +#include "gdbarch.h" struct trad_frame_cache { @@ -44,19 +45,28 @@ trad_frame_cache_zalloc (struct frame_info *this_frame) return this_trad_cache; } +/* See trad-frame.h. */ + +void +trad_frame_reset_saved_regs (struct gdbarch *gdbarch, + struct trad_frame_saved_reg *regs) +{ + int numregs = gdbarch_num_cooked_regs (gdbarch); + for (int regnum = 0; regnum < numregs; regnum++) + { + regs[regnum].realreg = regnum; + regs[regnum].addr = -1; + } +} + struct trad_frame_saved_reg * trad_frame_alloc_saved_regs (struct gdbarch *gdbarch) { - int regnum; - int numregs = gdbarch_num_regs (gdbarch) + gdbarch_num_pseudo_regs (gdbarch); + int numregs = gdbarch_num_cooked_regs (gdbarch); struct trad_frame_saved_reg *this_saved_regs = FRAME_OBSTACK_CALLOC (numregs, struct trad_frame_saved_reg); - for (regnum = 0; regnum < numregs; regnum++) - { - this_saved_regs[regnum].realreg = regnum; - this_saved_regs[regnum].addr = -1; - } + trad_frame_reset_saved_regs (gdbarch, this_saved_regs); return this_saved_regs; }