+/* Return the first non-tailcall frame above FRAME or FRAME if it is not a
+ tailcall frame. Return NULL if FRAME is the start of a tailcall-only
+ chain. */
+
+extern struct frame_info *skip_tailcall_frames (struct frame_info *frame);
+
+/* Return the first frame above FRAME or FRAME of which the code is
+ writable. */
+
+extern struct frame_info *skip_unwritable_frames (struct frame_info *frame);
+
+/* Data for the "set backtrace" settings. */
+
+struct set_backtrace_options
+{
+ /* Flag to indicate whether backtraces should continue past
+ main. */
+ bool backtrace_past_main = false;
+
+ /* Flag to indicate whether backtraces should continue past
+ entry. */
+ bool backtrace_past_entry = false;
+
+ /* Upper bound on the number of backtrace levels. Note this is not
+ exposed as a command option, because "backtrace" and "frame
+ apply" already have other means to set a frame count limit. */
+ unsigned int backtrace_limit = UINT_MAX;
+};
+
+/* The corresponding option definitions. */
+extern const gdb::option::option_def set_backtrace_option_defs[2];
+
+/* The values behind the global "set backtrace ..." settings. */
+extern set_backtrace_options user_set_backtrace_options;
+
+/* Mark that the PC value is masked for the previous frame. */
+
+extern void set_frame_previous_pc_masked (struct frame_info *frame);
+
+/* Get whether the PC value is masked for the given frame. */
+
+extern bool get_frame_pc_masked (const struct frame_info *frame);
+