/* Traditional frame unwind support, for GDB the GNU Debugger.
- Copyright (C) 2003, 2004, 2007, 2008 Free Software Foundation, Inc.
+ Copyright (C) 2003-2017 Free Software Foundation, Inc.
This file is part of GDB.
return this_trad_cache;
}
-/* A traditional frame is unwound by analysing the function prologue
- and using the information gathered to track registers. For
- non-optimized frames, the technique is reliable (just need to check
- for all potential instruction sequences). */
-
struct trad_frame_saved_reg *
-trad_frame_alloc_saved_regs (struct frame_info *this_frame)
+trad_frame_alloc_saved_regs (struct gdbarch *gdbarch)
{
int regnum;
- struct gdbarch *gdbarch = get_frame_arch (this_frame);
int numregs = gdbarch_num_regs (gdbarch) + gdbarch_num_pseudo_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;
return this_saved_regs;
}
-enum { REG_VALUE = -1, REG_UNKNOWN = -2 };
+/* A traditional frame is unwound by analysing the function prologue
+ and using the information gathered to track registers. For
+ non-optimized frames, the technique is reliable (just need to check
+ for all potential instruction sequences). */
+
+struct trad_frame_saved_reg *
+trad_frame_alloc_saved_regs (struct frame_info *this_frame)
+{
+ struct gdbarch *gdbarch = get_frame_arch (this_frame);
+
+ return trad_frame_alloc_saved_regs (gdbarch);
+}
+
+enum { TF_REG_VALUE = -1, TF_REG_UNKNOWN = -2 };
int
trad_frame_value_p (struct trad_frame_saved_reg this_saved_regs[], int regnum)
{
- return (this_saved_regs[regnum].realreg == REG_VALUE);
+ return (this_saved_regs[regnum].realreg == TF_REG_VALUE);
}
int
{
/* Make the REALREG invalid, indicating that the ADDR contains the
register's value. */
- this_saved_regs[regnum].realreg = REG_VALUE;
+ this_saved_regs[regnum].realreg = TF_REG_VALUE;
this_saved_regs[regnum].addr = val;
}
int regnum)
{
/* Make the REALREG invalid, indicating that the value is not known. */
- this_saved_regs[regnum].realreg = REG_UNKNOWN;
+ this_saved_regs[regnum].realreg = TF_REG_UNKNOWN;
this_saved_regs[regnum].addr = -1;
}
struct trad_frame_saved_reg this_saved_regs[],
int regnum)
{
- struct gdbarch *gdbarch = get_frame_arch (this_frame);
if (trad_frame_addr_p (this_saved_regs, regnum))
/* The register was saved in memory. */
return frame_unwind_got_memory (this_frame, regnum,