X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gdb%2Fframe-unwind.h;h=9543dddd62632ab9c36181379590f53f6e8e11e8;hb=b437bfe0f4cf06559ca4c508a2869383196ddc6b;hp=5b04a1cb3067d66d03f231b4e686a8f913acd8e9;hpb=8fbca658f0643a6c3d5b61840351ae70e5bf2db6;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/frame-unwind.h b/gdb/frame-unwind.h index 5b04a1cb30..9543dddd62 100644 --- a/gdb/frame-unwind.h +++ b/gdb/frame-unwind.h @@ -1,7 +1,6 @@ /* Definitions for a frame unwinder, for GDB, the GNU debugger. - Copyright (C) 2003, 2004, 2007, 2008, 2009, 2010, 2011 - Free Software Foundation, Inc. + Copyright (C) 2003-2019 Free Software Foundation, Inc. This file is part of GDB. @@ -45,7 +44,10 @@ struct value; /* Given THIS frame, take a whiff of its registers (namely the PC and attributes) and if SELF is the applicable unwinder, - return non-zero. Possibly also initialize THIS_PROLOGUE_CACHE. */ + return non-zero. Possibly also initialize THIS_PROLOGUE_CACHE; but + only if returning 1. Initializing THIS_PROLOGUE_CACHE in other + cases (0 return) is invalid. In case of exception, the caller has + to set *THIS_PROLOGUE_CACHE to NULL. */ typedef int (frame_sniffer_ftype) (const struct frame_unwind *self, struct frame_info *this_frame, @@ -68,6 +70,18 @@ enum unwind_stop_reason default_frame_unwind_stop_reason (struct frame_info *this_frame, void **this_cache); +/* A default unwind_pc callback that simply unwinds the register identified + by GDBARCH_PC_REGNUM. */ + +extern CORE_ADDR default_unwind_pc (struct gdbarch *gdbarch, + struct frame_info *next_frame); + +/* A default unwind_sp callback that simply unwinds the register identified + by GDBARCH_SP_REGNUM. */ + +extern CORE_ADDR default_unwind_sp (struct gdbarch *gdbarch, + struct frame_info *next_frame); + /* Assuming the frame chain: (outer) prev <-> this <-> next (inner); use THIS frame, and through it the NEXT frame's register unwind method, to determine the frame ID of THIS frame.