281 _(
"Whether backtraces should "
282 "continue past \"main\" is %s.\n"),
292 "entry point of a program is %s.\n"),
302 _(
"An upper bound on the number "
303 "of backtrace levels is %s.\n"),
330 fprint_field (file,
"code",
id.code_addr_p,
id.code_addr);
333 fprint_field (file,
"special",
id.special_addr_p,
id.special_addr);
335 if (
id.artificial_depth)
479 return fi->this_id.value;
520 id.special_addr_p = 1;
549 id.special_addr_p = 1;
583 if (!p && memcmp (&l, &outer_frame_id,
sizeof (l)) == 0)
699 const struct block *lb, *rb;
706 if (lb == NULL || rb == NULL)
822 "{ frame_unwind_pc (this_frame=%d)"
823 " -> <unavailable> }\n",
832 "{ frame_unwind_pc (this_frame=%d)"
833 " -> <not saved> }\n",
847 "{ frame_unwind_pc (this_frame=%d) "
865 "unexpected prev_pc status: %d",
891 "{ get_frame_func (this_frame=%d)"
892 " -> unavailable }\n",
901 "{ get_frame_func (this_frame=%d) -> %s }\n",
971 error (
_(
"Cannot pop the initial frame."));
1005 int *optimizedp,
int *unavailablep,
1031 if (!*optimizedp && !*unavailablep)
1046 int *optimizedp,
int *unavailablep,
enum lval_type *lvalp,
1061 lvalp, addrp, realnump, bufferp);
1074 &lval, &addr, &realnum, buf);
1078 _(
"Register %d was not saved"), regnum);
1081 _(
"Register %d is not available"), regnum);
1103 "{ frame_unwind_register_value "
1104 "(frame=%d,regnum=%d(%s),...) ",
1105 frame->
level, regnum,
1110 if (frame->
unwind == NULL)
1231 &lval, &addr, &realnum, NULL);
1233 error (
_(
"Attempt to assign to a register that was not saved."));
1245 error (
_(
"Attempt to assign to an unmodifiable value."));
1268 &lval, &addr, &realnum, myaddr);
1270 return !optimized && !unavailable;
1276 int *optimizedp,
int *unavailablep)
1294 for (i = regnum; i < numregs; i++)
1300 maxsize += thissize;
1303 error (
_(
"Bad debug information detected: "
1304 "Attempt to read %d bytes from registers."), len);
1321 &lval, &addr, &realnum, myaddr);
1322 if (*optimizedp || *unavailablep)
1333 &lval, &addr, &realnum, buf);
1334 if (*optimizedp || *unavailablep)
1336 memcpy (myaddr, buf + offset, curr_len);
1380 memcpy (buf + offset, myaddr, curr_len);
1409 frame->
next = frame;
1438 memset (data, 0, size);
1456 current_frame = frame;
1469 error (
_(
"No registers."));
1478 error (
_(
"No selected thread."));
1480 error (
_(
"Invalid selected thread."));
1482 error (
_(
"Target is executing."));
1485 if (current_frame == NULL)
1494 current_frame = sentinel_frame;
1537 if (selected_frame == NULL)
1540 error ((
"%s"), message);
1576 selected_frame = fi;
1626 "{ create_new_frame (addr=%s, pc=%s) ",
1670 if (this_frame->
level > 0)
1671 return this_frame->
next;
1692 for (fi = current_frame; fi != NULL; fi = fi->
prev)
1704 if (current_frame != NULL)
1707 current_frame = NULL;
1725 while (this_frame != NULL)
1730 lvalp, addrp, realnump, NULL);
1752 prev_frame = this_frame->
prev;
1755 prev_frame->
next = NULL;
1756 this_frame->
prev = NULL;
1771 struct cleanup *prev_frame_cleanup;
1774 if (prev_frame == NULL)
1794 prev_frame->
next = NULL;
1795 this_frame->
prev = NULL;
1818 if (this_frame != NULL)
1834 return this_frame->
prev;
1841 if (this_frame->
unwind == NULL)
1887 const char *morestack_name = NULL;
1894 if (!morestack_name || strcmp (morestack_name,
"__morestack") != 0)
1901 " // this frame ID is inner }\n");
1922 if (this_frame->
level > 0
1928 int optimized, realnum, nrealnum;
1934 &optimized, &lval, &addr, &realnum);
1937 &optimized, &nlval, &naddr, &nrealnum);
1939 if ((lval ==
lval_memory && lval == nlval && addr == naddr)
1940 || (lval ==
lval_register && lval == nlval && realnum == nrealnum))
1950 this_frame->
prev = NULL;
1978 if (ex.message != NULL)
1987 size = strlen (ex.message) + 1;
1989 memcpy (stop_string, ex.message, size);
2048 this_frame->
prev = prev_frame;
2049 prev_frame->
next = this_frame;
2070 if (this_frame != NULL)
2089 if (msymbol.
minsym == NULL)
2143 if (this_frame->
level >= 0
2190 if (this_frame->
level >= 0
2203 if (this_frame->
level > 0
2207 && frame_pc_p && frame_pc == 0)
2295 next_frame = next_frame->
next;
2400 if (fi->
base == NULL)
2415 if (fi->
base == NULL)
2430 if (fi->
base == NULL)
2447 return fi->
unwind == unwinder;
2465 if (frame->
unwind == NULL)
2486 return this_frame->
pspace;
2547 if (next_frame->
unwind == NULL)
2560 "{ frame_unwind_arch (next_frame=%d) -> %s }\n",
2614 #define SET(name, description) \
2615 case name: return _(description);
2616 #include "unwind_stop_reasons.def"
2621 "Invalid frame stop reason");
2647 #define SET(name, description) \
2648 case name: return #name;
2649 #include "unwind_stop_reasons.def"
2654 "Invalid frame stop reason");
2730 Set backtrace specific variables.\n\
2731 Configure backtrace variables such as the backtrace limit"),
2732 &set_backtrace_cmdlist,
"set backtrace ",
2735 Show backtrace specific variables\n\
2736 Show backtrace variables such as the backtrace limit"),
2737 &show_backtrace_cmdlist,
"show backtrace ",
2742 Set whether backtraces should continue past \"main\"."),
_(
"\
2743 Show whether backtraces should continue past \"main\"."),
_(
"\
2744 Normally the caller of \"main\" is not of interest, so GDB will terminate\n\
2745 the backtrace at \"main\". Set this variable if you need to see the rest\n\
2746 of the stack trace."),
2749 &set_backtrace_cmdlist,
2750 &show_backtrace_cmdlist);
2754 Set whether backtraces should continue past the entry point of a program."),
2756 Show whether backtraces should continue past the entry point of a program."),
2758 Normally there are no callers beyond the entry point of a program, so GDB\n\
2759 will terminate the backtrace there. Set this variable if you need to see\n\
2760 the rest of the stack trace."),
2763 &set_backtrace_cmdlist,
2764 &show_backtrace_cmdlist);
2768 Set an upper bound on the number of backtrace levels."),
_(
"\
2769 Show the upper bound on the number of backtrace levels."),
_(
"\
2770 No more than the specified number of frames can be displayed or examined.\n\
2771 Literal \"unlimited\" or zero means no limit."),
2774 &set_backtrace_cmdlist,
2775 &show_backtrace_cmdlist);
2779 Set frame debugging."),
_(
"\
2780 Show frame debugging."),
_(
"\
2781 When non-zero, frame specific internal debugging is enabled."),
int frame_id_p(struct frame_id l)
struct frame_info * frame_find_by_id(struct frame_id id)
static void frame_stash_invalidate(void)
int get_frame_address_in_block_if_available(struct frame_info *this_frame, CORE_ADDR *pc)
const char * user_reg_map_regnum_to_name(struct gdbarch *gdbarch, int regnum)
ULONGEST extract_unsigned_integer(const gdb_byte *, int, enum bfd_endian)
unsigned int special_addr_p
char * hex_string(LONGEST num)
static struct frame_info * frame_stash_find(struct frame_id id)
#define target_has_registers
struct cmd_list_element * add_prefix_cmd(const char *name, enum command_class theclass, cmd_cfunc_ftype *fun, const char *doc, struct cmd_list_element **prefixlist, const char *prefixname, int allow_unknown, struct cmd_list_element **list)
static struct cmd_list_element * show_backtrace_cmdlist
static hashval_t frame_addr_hash(const void *ap)
struct frame_id frame_id_build(CORE_ADDR stack_addr, CORE_ADDR code_addr)
CORE_ADDR get_frame_address_in_block(struct frame_info *this_frame)
struct frame_info * get_selected_frame(const char *message)
__extension__ enum frame_id_stack_status stack_status
CORE_ADDR get_frame_pc(struct frame_info *frame)
void add_setshow_zuinteger_cmd(const char *name, enum command_class theclass, unsigned int *var, const char *set_doc, const char *show_doc, const char *help_doc, cmd_sfunc_ftype *set_func, show_value_ftype *show_func, struct cmd_list_element **set_list, struct cmd_list_element **show_list)
#define MSYMBOL_LINKAGE_NAME(symbol)
struct frame_info * get_current_frame(void)
int ptid_equal(ptid_t ptid1, ptid_t ptid2)
static struct frame_info * selected_frame
static struct frame_info * skip_artificial_frames(struct frame_info *frame)
static unsigned int backtrace_limit
int gdbarch_inner_than(struct gdbarch *gdbarch, CORE_ADDR lhs, CORE_ADDR rhs)
struct frame_info * get_prev_frame(struct frame_info *this_frame)
void frame_pop(struct frame_info *this_frame)
CORE_ADDR frame_unwind_caller_pc(struct frame_info *this_frame)
struct cleanup * frame_prepare_for_sniffer(struct frame_info *frame, const struct frame_unwind *unwind)
struct gdbarch * frame_unwind_caller_arch(struct frame_info *next_frame)
#define BMSYMBOL_VALUE_ADDRESS(symbol)
int catch_exceptions(struct ui_out *uiout, catch_exceptions_ftype *func, void *func_args, return_mask mask)
void dummy_frame_pop(struct frame_id dummy_id, ptid_t ptid)
void * sentinel_frame_cache(struct regcache *regcache)
enum language set_language(enum language lang)
void put_frame_register_bytes(struct frame_info *frame, int regnum, CORE_ADDR offset, int len, const gdb_byte *myaddr)
frame_this_locals_ftype * this_locals
const char * frame_stop_reason_string(struct frame_info *fi)
ULONGEST frame_unwind_register_unsigned(struct frame_info *frame, int regnum)
static int frame_id_inner(struct gdbarch *gdbarch, struct frame_id l, struct frame_id r)
struct ui_file * gdb_stdout
void val_print_unavailable(struct ui_file *stream)
struct frame_id frame_id_build_unavailable_stack(CORE_ADDR code_addr)
CORE_ADDR get_frame_sp(struct frame_info *this_frame)
void select_frame(struct frame_info *fi)
struct frame_id get_stack_frame_id(struct frame_info *next_frame)
void internal_error(const char *file, int line, const char *fmt,...)
const struct frame_id null_frame_id
void frame_unwind_register(struct frame_info *frame, int regnum, gdb_byte *buf)
static void frame_debug_got_null_frame(struct frame_info *this_frame, const char *reason)
void init_sal(struct symtab_and_line *sal)
const struct frame_unwind sentinel_frame_unwind
int get_frame_pc_if_available(struct frame_info *frame, CORE_ADDR *pc)
struct regcache * regcache_xmalloc(struct gdbarch *gdbarch, struct address_space *aspace)
frame_prev_register_ftype * prev_register
struct regcache * frame_save_as_regcache(struct frame_info *this_frame)
void value_free(struct value *val)
enum cached_copy_status status
initialize_file_ftype _initialize_frame
struct frame_info::@71 prev_pc
enum language la_language
frame_dealloc_cache_ftype * dealloc_cache
struct address_space * get_frame_address_space(struct frame_info *frame)
int gdbarch_num_regs(struct gdbarch *gdbarch)
ULONGEST get_frame_memory_unsigned(struct frame_info *this_frame, CORE_ADDR addr, int len)
static int backtrace_past_main
struct program_space * pspace
static void show_backtrace_cmd(char *args, int from_tty)
int gdbarch_unwind_sp_p(struct gdbarch *gdbarch)
CORE_ADDR get_frame_locals_address(struct frame_info *fi)
static void frame_cleanup_after_sniffer(void *arg)
struct regcache * get_current_regcache(void)
const struct block * block_for_pc(CORE_ADDR pc)
#define FRAME_OBSTACK_ZALLOC(TYPE)
static int frame_stash_add(struct frame_info *frame)
const char * paddress(struct gdbarch *gdbarch, CORE_ADDR addr)
struct gdbarch * frame_unwind_arch(struct frame_info *next_frame)
struct compunit_symtab * find_pc_compunit_symtab(CORE_ADDR pc)
static void remove_prev_frame(void *arg)
void frame_unwind_find_by_frame(struct frame_info *this_frame, void **this_cache)
int gdbarch_num_pseudo_regs(struct gdbarch *gdbarch)
LONGEST frame_unwind_register_signed(struct frame_info *frame, int regnum)
static CORE_ADDR frame_unwind_pc(struct frame_info *this_frame)
int frame_id_eq(struct frame_id l, struct frame_id r)
void val_print_optimized_out(const struct value *val, struct ui_file *stream)
static void frame_stash_create(void)
void find_frame_sal(struct frame_info *frame, struct symtab_and_line *sal)
const char * unwind_stop_reason_to_string(enum unwind_stop_reason reason)
struct cmd_list_element * setlist
struct observer * observer_attach_target_changed(observer_target_changed_ftype *f)
enum frame_type get_frame_type(struct frame_info *frame)
void frame_register(struct frame_info *frame, int regnum, int *optimizedp, int *unavailablep, enum lval_type *lvalp, CORE_ADDR *addrp, int *realnump, gdb_byte *bufferp)
struct value * get_frame_register_value(struct frame_info *frame, int regnum)
static void fprint_frame(struct ui_file *file, struct frame_info *fi)
struct frame_id get_frame_id(struct frame_info *fi)
static int unwind_to_current_frame(struct ui_out *ui_out, void *args)
LONGEST read_memory_integer(CORE_ADDR memaddr, int len, enum bfd_endian byte_order)
const gdb_byte * value_contents(struct value *value)
#define CATCH(EXCEPTION, MASK)
int contained_in(const struct block *a, const struct block *b)
struct target_ops current_target
void initialize_file_ftype(void)
struct symtab_and_line find_pc_line(CORE_ADDR pc, int notcurrent)
int value_lazy(struct value *value)
static int frame_addr_hash_eq(const void *a, const void *b)
int gdbarch_sp_regnum(struct gdbarch *gdbarch)
struct symbol * inline_skipped_symbol(ptid_t ptid)
enum unwind_stop_reason get_frame_unwind_stop_reason(struct frame_info *frame)
void fprintf_filtered(struct ui_file *stream, const char *format,...)
void add_setshow_uinteger_cmd(const char *name, enum command_class theclass, unsigned int *var, const char *set_doc, const char *show_doc, const char *help_doc, cmd_sfunc_ftype *set_func, show_value_ftype *show_func, struct cmd_list_element **set_list, struct cmd_list_element **show_list)
int safe_frame_unwind_memory(struct frame_info *this_frame, CORE_ADDR addr, gdb_byte *buf, int len)
void * frame_obstack_zalloc(unsigned long size)
CORE_ADDR gdbarch_convert_from_func_ptr_addr(struct gdbarch *gdbarch, CORE_ADDR addr, struct target_ops *targ)
frame_prev_arch_ftype * prev_arch
void fprintf_unfiltered(struct ui_file *stream, const char *format,...)
frame_unwind_stop_reason_ftype * stop_reason
struct cmd_list_element * showlist
const gdb_byte * value_contents_all(struct value *value)
static void show_backtrace_past_entry(struct ui_file *file, int from_tty, struct cmd_list_element *c, const char *value)
CORE_ADDR gdbarch_unwind_pc(struct gdbarch *gdbarch, struct frame_info *next_frame)
struct frame_id frame_id_build_special(CORE_ADDR stack_addr, CORE_ADDR code_addr, CORE_ADDR special_addr)
static int inside_entry_func(struct frame_info *this_frame)
struct symbol * get_frame_function(struct frame_info *frame)
enum bfd_endian gdbarch_byte_order(struct gdbarch *gdbarch)
int get_traceframe_number(void)
struct frame_info * get_selected_frame_if_set(void)
struct cleanup * make_cleanup(make_cleanup_ftype *function, void *arg)
int frame_id_artificial_p(struct frame_id l)
struct frame_info * deprecated_safe_get_selected_frame(void)
LONGEST get_frame_register_signed(struct frame_info *frame, int regnum)
#define VALUE_REGNUM(val)
CORE_ADDR gdbarch_unwind_sp(struct gdbarch *gdbarch, struct frame_info *next_frame)
static void fprint_field(struct ui_file *file, const char *name, int p, CORE_ADDR addr)
struct frame_info * get_prev_frame_always(struct frame_info *this_frame)
static int inside_main_func(struct frame_info *this_frame)
struct frame_id frame_id_build_unavailable_stack_special(CORE_ADDR code_addr, CORE_ADDR special_addr)
void regcache_cpy(struct regcache *dst, struct regcache *src)
#define SYMBOL_LINE(symbol)
struct program_space * frame_unwind_program_space(struct frame_info *this_frame)
static void set_backtrace_cmd(char *args, int from_tty)
struct frame_info * create_new_frame(CORE_ADDR addr, CORE_ADDR pc)
CORE_ADDR get_frame_args_address(struct frame_info *fi)
struct frame_info::@72 prev_func
#define target_has_memory
const struct frame_unwind * unwind
struct cmd_list_element * setdebuglist
void read_memory(CORE_ADDR memaddr, gdb_byte *myaddr, ssize_t len)
struct frame_id frame_unwind_caller_id(struct frame_info *next_frame)
struct value * frame_unwind_register_value(struct frame_info *frame, int regnum)
static void show_backtrace_past_main(struct ui_file *file, int from_tty, struct cmd_list_element *c, const char *value)
ULONGEST get_frame_register_unsigned(struct frame_info *frame, int regnum)
struct frame_info::@70 prev_arch
struct ui_file * gdb_stdlog
static struct frame_info * create_sentinel_frame(struct program_space *pspace, struct regcache *regcache)
void cmd_show_list(struct cmd_list_element *list, int from_tty, const char *prefix)
static void frame_register_unwind_location(struct frame_info *this_frame, int regnum, int *optimizedp, enum lval_type *lvalp, CORE_ADDR *addrp, int *realnump)
void put_frame_register(struct frame_info *frame, int regnum, const gdb_byte *buf)
unsigned long hash(const void *addr, int length)
CORE_ADDR get_frame_base_address(struct frame_info *fi)
static struct obstack frame_cache_obstack
static void frame_observer_target_changed(struct target_ops *target)
static void show_frame_debug(struct ui_file *file, int from_tty, struct cmd_list_element *c, const char *value)
int frame_inlined_callees(struct frame_info *this_frame)
void throw_exception(struct gdb_exception exception)
int entry_point_address_query(CORE_ADDR *entry_p)
struct frame_info * get_next_frame(struct frame_info *this_frame)
int get_frame_func_if_available(struct frame_info *this_frame, CORE_ADDR *pc)
int value_entirely_available(struct value *value)
void help_list(struct cmd_list_element *list, const char *cmdtype, enum command_class theclass, struct ui_file *stream)
void discard_cleanups(struct cleanup *old_chain)
const struct language_defn * current_language
int value_optimized_out(struct value *value)
void gdb_print_host_address(const void *addr, struct ui_file *stream)
struct bound_minimal_symbol lookup_minimal_symbol_by_pc(CORE_ADDR pc)
enum unwind_stop_reason stop_reason
int deprecated_frame_register_read(struct frame_info *frame, int regnum, gdb_byte *myaddr)
struct address_space * aspace
int frame_relative_level(struct frame_info *fi)
static struct cmd_list_element * set_backtrace_cmdlist
CORE_ADDR get_frame_base(struct frame_info *fi)
void regcache_save(struct regcache *dst, regcache_cooked_read_ftype *cooked_read, void *src)
int target_read_memory(CORE_ADDR memaddr, gdb_byte *myaddr, ssize_t len)
struct minimal_symbol * minsym
struct program_space * pspace
static void show_backtrace_limit(struct ui_file *file, int from_tty, struct cmd_list_element *c, const char *value)
static struct frame_info * get_prev_frame_always_1(struct frame_info *this_frame)
void get_frame_register(struct frame_info *frame, int regnum, gdb_byte *buf)
static htab_t frame_stash
int read_frame_register_unsigned(struct frame_info *frame, int regnum, ULONGEST *val)
enum language compunit_language(const struct compunit_symtab *cust)
static const char * frame_stop_reason_symbol_string(enum unwind_stop_reason reason)
struct cleanup * make_cleanup_regcache_xfree(struct regcache *regcache)
struct address_space * get_regcache_aspace(const struct regcache *regcache)
void fprint_frame_id(struct ui_file *file, struct frame_id id)
void frame_register_unwind(struct frame_info *frame, int regnum, int *optimizedp, int *unavailablep, enum lval_type *lvalp, CORE_ADDR *addrp, int *realnump, gdb_byte *bufferp)
frame_this_args_ftype * this_args
int is_exited(ptid_t ptid)
int get_frame_register_bytes(struct frame_info *frame, int regnum, CORE_ADDR offset, int len, gdb_byte *myaddr, int *optimizedp, int *unavailablep)
struct program_space * current_program_space
static struct frame_info * current_frame
unsigned long long ULONGEST
static void fprint_frame_type(struct ui_file *file, enum frame_type type)
const struct frame_id outer_frame_id
void release_value(struct value *val)
int register_size(struct gdbarch *gdbarch, int regnum)
struct type * value_type(const struct value *value)
const struct frame_base * base
static struct frame_info * get_prev_frame_raw(struct frame_info *this_frame)
const struct bfd_arch_info * gdbarch_bfd_arch_info(struct gdbarch *gdbarch)
frame_this_id_ftype * this_id
struct cmd_list_element * showdebuglist
int gdbarch_pc_regnum(struct gdbarch *gdbarch)
static int backtrace_past_entry
struct frame_id frame_id_build_wild(CORE_ADDR stack_addr)
#define TYPE_LENGTH(thistype)
LONGEST get_frame_memory_signed(struct frame_info *this_frame, CORE_ADDR addr, int len)
void annotate_frames_invalid(void)
const struct frame_unwind * unwind
void reinit_frame_cache(void)
CORE_ADDR get_pc_function_start(CORE_ADDR pc)
ULONGEST read_memory_unsigned_integer(CORE_ADDR memaddr, int len, enum bfd_endian byte_order)
struct ui_out * current_uiout
LONGEST extract_signed_integer(const gdb_byte *, int, enum bfd_endian)
void write_memory(CORE_ADDR memaddr, const bfd_byte *myaddr, ssize_t len)
struct frame_info::@73 this_id
int gdbarch_unwind_pc_p(struct gdbarch *gdbarch)
static void compute_frame_id(struct frame_info *fi)
static struct frame_info * get_prev_frame_if_no_cycle(struct frame_info *this_frame)
CORE_ADDR value_address(const struct value *value)
struct bound_minimal_symbol lookup_minimal_symbol(const char *name, const char *sfile, struct objfile *objf)
struct symtab * symbol_symtab(const struct symbol *symbol)
enum bfd_endian byte_order
int has_stack_frames(void)
struct program_space * get_frame_program_space(struct frame_info *frame)
frame_this_base_ftype * this_base
CORE_ADDR get_frame_func(struct frame_info *this_frame)
void error(const char *fmt,...)
void val_print_not_saved(struct ui_file *stream)
struct gdbarch * get_frame_arch(struct frame_info *this_frame)
void throw_error(enum errors error, const char *fmt,...)
void do_cleanups(struct cleanup *old_chain)
void add_setshow_boolean_cmd(const char *name, enum command_class theclass, int *var, const char *set_doc, const char *show_doc, const char *help_doc, cmd_sfunc_ftype *set_func, show_value_ftype *show_func, struct cmd_list_element **set_list, struct cmd_list_element **show_list)
int is_executing(ptid_t ptid)
void regcache_cooked_write(struct regcache *regcache, int regnum, const gdb_byte *buf)
int frame_unwinder_is(struct frame_info *fi, const struct frame_unwind *unwinder)
void get_frame_memory(struct frame_info *this_frame, CORE_ADDR addr, gdb_byte *buf, int len)
const ULONGEST const LONGEST len
const struct frame_base * frame_base_find_by_frame(struct frame_info *this_frame)
static enum register_status do_frame_register_read(void *src, int regnum, gdb_byte *buf)