/* Code dealing with dummy stack frames, for GDB, the GNU debugger.
- Copyright (C) 2002, 2004, 2007 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2004, 2007, 2008, 2009, 2010, 2011
+ Free Software Foundation, Inc.
This file is part of GDB.
#if !defined (DUMMY_FRAME_H)
#define DUMMY_FRAME_H 1
-struct frame_info;
-struct regcache;
+#include "frame.h"
+
+struct infcall_suspend_state;
struct frame_unwind;
-struct frame_id;
/* Push the information needed to identify, and unwind from, a dummy
frame onto the dummy frame stack. */
be expanded so that it knowns the lower/upper extent of the dummy
frame's code. */
-extern void dummy_frame_push (struct regcache *regcache,
- const struct frame_id *dummy_id);
+extern void dummy_frame_push (struct infcall_suspend_state *caller_state,
+ const struct frame_id *dummy_id);
+
+/* Pop the dummy frame DUMMY_ID, restoring program state to that before the
+ frame was created.
+ On return reinit_frame_cache has been called.
+ If the frame isn't found, flag an internal error.
+
+ NOTE: This can only pop the one frame, even if it is in the middle of the
+ stack, because the other frames may be for different threads, and there's
+ currently no way to tell which stack frame is for which thread. */
+
+extern void dummy_frame_pop (struct frame_id dummy_id);
/* If the PC falls in a dummy frame, return a dummy frame
unwinder. */
-extern const struct frame_unwind *const dummy_frame_unwind;
+extern const struct frame_unwind dummy_frame_unwind;
#endif /* !defined (DUMMY_FRAME_H) */