/* Definitions for dealing with stack frames, for GDB, the GNU debugger.
- Copyright (C) 1986-2016 Free Software Foundation, Inc.
+ Copyright (C) 1986-2018 Free Software Foundation, Inc.
This file is part of GDB.
is not found. */
extern struct frame_info *frame_find_by_id (struct frame_id id);
+/* Given a frame's ID, find the previous frame's ID. Returns null_frame_id
+ if the frame is not found. */
+extern struct frame_id get_prev_frame_id_by_id (struct frame_id id);
+
/* Base attributes of a frame: */
/* The frame's `resume' address. Where the program will resume in
find_frame_symtab(), find_frame_function(). Each will need to be
carefully considered to determine if the real intent was for it to
apply to the PC or the adjusted PC. */
-extern void find_frame_sal (struct frame_info *frame,
- struct symtab_and_line *sal);
+extern symtab_and_line find_frame_sal (frame_info *frame);
/* Set the current source and line to the location given by frame
FRAME, if possible. */
/* Unwind THIS frame's program space from the NEXT frame. */
extern struct program_space *frame_unwind_program_space (struct frame_info *);
+class address_space;
+
/* Return the frame's address space. */
-extern struct address_space *get_frame_address_space (struct frame_info *);
+extern const address_space *get_frame_address_space (struct frame_info *);
/* For frames where we can not unwind further, describe why. */
#define FRAME_OBSTACK_CALLOC(NUMBER,TYPE) \
((TYPE *) frame_obstack_zalloc ((NUMBER) * sizeof (TYPE)))
+class readonly_detached_regcache;
/* Create a regcache, and copy the frame's registers into it. */
-struct regcache *frame_save_as_regcache (struct frame_info *this_frame);
+std::unique_ptr<readonly_detached_regcache> frame_save_as_regcache
+ (struct frame_info *this_frame);
extern const struct block *get_frame_block (struct frame_info *,
CORE_ADDR *addr_in_block);
extern void read_frame_local (struct symbol *sym, struct frame_info *frame,
struct frame_arg *argp);
-extern void args_info (char *, int);
+extern void info_args_command (const char *, int);
-extern void locals_info (char *, int);
+extern void info_locals_command (const char *, int);
-extern void return_command (char *, int);
+extern void return_command (const char *, int);
/* Set FRAME's unwinder temporarily, so that we can call a sniffer.
- Return a cleanup which should be called if unwinding fails, and
- discarded if it succeeds. */
+ If sniffing fails, the caller should be sure to call
+ frame_cleanup_after_sniffer. */
+
+extern void frame_prepare_for_sniffer (struct frame_info *frame,
+ const struct frame_unwind *unwind);
+
+/* Clean up after a failed (wrong unwinder) attempt to unwind past
+ FRAME. */
-struct cleanup *frame_prepare_for_sniffer (struct frame_info *frame,
- const struct frame_unwind *unwind);
+extern void frame_cleanup_after_sniffer (struct frame_info *frame);
/* Notes (cagney/2002-11-27, drow/2003-09-06):