257 dummy.this_id.value = id;
290 _(
"Whether backtraces should " 291 "continue past \"main\" is %s.\n"),
301 "entry point of a program is %s.\n"),
311 _(
"An upper bound on the number " 312 "of backtrace levels is %s.\n"),
341 fprint_field (file,
"code",
id.code_addr_p,
id.code_addr);
344 fprint_field (file,
"special",
id.special_addr_p,
id.special_addr);
346 if (
id.artificial_depth)
545 return fi->this_id.value;
565 if (next_frame == NULL)
590 id.special_addr_p = 1;
619 id.special_addr_p = 1;
769 const struct block *lb, *rb;
776 if (lb == NULL || rb == NULL)
896 "{ frame_unwind_pc (this_frame=%d)" 897 " -> <unavailable> }\n",
906 "{ frame_unwind_pc (this_frame=%d)" 907 " -> <not saved> }\n",
921 "{ frame_unwind_pc (this_frame=%d) " 939 "unexpected prev_pc status: %d",
972 "{ get_frame_func (this_frame=%d)" 973 " -> unavailable }\n",
982 "{ get_frame_func (this_frame=%d) -> %s }\n",
1020 std::unique_ptr<struct regcache>
1023 std::unique_ptr<struct regcache>
regcache 1047 error (
_(
"Cannot pop the initial frame."));
1053 if (prev_frame == NULL)
1054 error (
_(
"Cannot find the caller frame."));
1060 std::unique_ptr<struct regcache> scratch
1082 int *optimizedp,
int *unavailablep,
1111 if (!*optimizedp && !*unavailablep)
1126 int *optimizedp,
int *unavailablep,
enum lval_type *lvalp,
1141 lvalp, addrp, realnump, bufferp);
1154 &
lval, &addr, &realnum, buf);
1158 _(
"Register %d was not saved"),
regnum);
1161 _(
"Register %d is not available"),
regnum);
1183 "{ frame_unwind_register_value " 1184 "(frame=%d,regnum=%d(%s),...) ",
1190 if (frame->
unwind == NULL)
1256 _(
"Register %d was not saved"),
regnum);
1261 _(
"Register %d is not available"),
regnum);
1291 _(
"Register %d was not saved"),
regnum);
1296 _(
"Register %d is not available"),
regnum);
1345 &lval, &addr, &realnum, NULL);
1347 error (
_(
"Attempt to assign to a register that was not saved."));
1359 error (
_(
"Attempt to assign to an unmodifiable value."));
1382 &lval, &addr, &realnum, myaddr);
1384 return !optimized && !unavailable;
1390 int *optimizedp,
int *unavailablep)
1408 for (i =
regnum; i < numregs; i++)
1414 maxsize += thissize;
1417 error (
_(
"Bad debug information detected: " 1418 "Attempt to read %d bytes from registers."), len);
1435 &lval, &addr, &realnum, myaddr);
1436 if (*optimizedp || *unavailablep)
1447 if (*optimizedp || *unavailablep)
1532 frame->
next = frame;
1573 error (
_(
"No registers."));
1600 return current_frame;
1643 error ((
"%s"), message);
1729 "{ create_new_frame (addr=%s, pc=%s) ",
1773 if (this_frame->
level > 0)
1774 return this_frame->
next;
1795 return this_frame->
next;
1847 while (this_frame != NULL)
1852 lvalp, addrp, realnump, NULL);
1874 prev_frame = this_frame->
prev;
1877 prev_frame->
next = NULL;
1878 this_frame->
prev = NULL;
1893 struct cleanup *prev_frame_cleanup;
1906 if (prev_frame->
level == 0)
1926 prev_frame->
next = NULL;
1927 this_frame->
prev = NULL;
1950 if (this_frame != NULL)
1966 return this_frame->
prev;
1973 if (this_frame->
unwind == NULL)
2019 const char *morestack_name = NULL;
2026 if (!morestack_name || strcmp (morestack_name,
"__morestack") != 0)
2033 " // this frame ID is inner }\n");
2054 if (this_frame->
level > 0
2060 int optimized, realnum, nrealnum;
2066 &optimized, &lval, &addr, &realnum);
2069 &optimized, &nlval, &naddr, &nrealnum);
2071 if ((lval ==
lval_memory && lval == nlval && addr == naddr)
2072 || (lval ==
lval_register && lval == nlval && realnum == nrealnum))
2082 this_frame->
prev = NULL;
2110 if (ex.message != NULL)
2119 size = strlen (ex.message) + 1;
2180 this_frame->
prev = prev_frame;
2181 prev_frame->
next = this_frame;
2202 if (this_frame != NULL)
2221 if (msymbol.
minsym == NULL)
2271 if (this_frame->
level == 0)
2286 if (this_frame->
level >= 0
2333 if (this_frame->
level >= 0
2346 if (this_frame->
level > 0
2350 && frame_pc_p && frame_pc == 0)
2454 next_frame = next_frame->
next;
2556 if (fi->
base == NULL)
2571 if (fi->
base == NULL)
2586 if (fi->
base == NULL)
2603 return fi->
unwind == unwinder;
2621 if (frame->
unwind == NULL)
2642 return this_frame->
pspace;
2703 if (next_frame->
unwind == NULL)
2716 "{ frame_unwind_arch (next_frame=%d) -> %s }\n",
2819 #define SET(name, description) \ 2820 case name: return _(description); 2821 #include "unwind_stop_reasons.def" 2826 "Invalid frame stop reason");
2852 #define SET(name, description) \ 2853 case name: return #name; 2854 #include "unwind_stop_reasons.def" 2859 "Invalid frame stop reason");
2930 Set backtrace specific variables.\n\ 2931 Configure backtrace variables such as the backtrace limit"),
2935 Show backtrace specific variables\n\ 2936 Show backtrace variables such as the backtrace limit"),
2942 Set whether backtraces should continue past \"main\"."),
_(
"\ 2943 Show whether backtraces should continue past \"main\"."),
_(
"\ 2944 Normally the caller of \"main\" is not of interest, so GDB will terminate\n\ 2945 the backtrace at \"main\". Set this variable if you need to see the rest\n\ 2946 of the stack trace."),
2954 Set whether backtraces should continue past the entry point of a program."),
2956 Show whether backtraces should continue past the entry point of a program."),
2958 Normally there are no callers beyond the entry point of a program, so GDB\n\ 2959 will terminate the backtrace there. Set this variable if you need to see\n\ 2960 the rest of the stack trace."),
2968 Set an upper bound on the number of backtrace levels."),
_(
"\ 2969 Show the upper bound on the number of backtrace levels."),
_(
"\ 2970 No more than the specified number of frames can be displayed or examined.\n\ 2971 Literal \"unlimited\" or zero means no limit."),
2979 Set frame debugging."),
_(
"\ 2980 Show frame debugging."),
_(
"\ 2981 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)
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
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)
const struct frame_id sentinel_frame_id
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)
#define MSYMBOL_LINKAGE_NAME(symbol)
struct frame_info * get_current_frame(void)
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 gdbarch * frame_unwind_caller_arch(struct frame_info *next_frame)
#define BMSYMBOL_VALUE_ADDRESS(symbol)
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)
void frame_cleanup_after_sniffer(struct frame_info *frame)
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 * memset(T *s, int c, size_t n)=delete
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)
const struct frame_unwind sentinel_frame_unwind
int get_frame_pc_if_available(struct frame_info *frame, CORE_ADDR *pc)
frame_prev_register_ftype * prev_register
static struct frame_info * get_prev_frame_always_1(struct frame_info *this_frame)
int value_lazy(const struct value *value)
void value_free(struct value *val)
enum cached_copy_status status
struct frame_info::@57 prev_arch
enum language la_language
frame_dealloc_cache_ftype * dealloc_cache
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
void regcache_save(struct regcache *regcache, regcache_cooked_read_ftype *cooked_read, void *src)
void frame_prepare_for_sniffer(struct frame_info *frame, const struct frame_unwind *unwind)
struct program_space * pspace
int gdbarch_unwind_sp_p(struct gdbarch *gdbarch)
struct frame_info::@60 this_id
CORE_ADDR get_frame_locals_address(struct frame_info *fi)
struct regcache * get_current_regcache(void)
struct frame_id get_prev_frame_id_by_id(struct frame_id id)
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)
const address_space * get_frame_address_space(struct frame_info *frame)
static void show_backtrace_cmd(const char *args, int from_tty)
struct cmd_list_element * add_prefix_cmd(const char *name, enum command_class theclass, cmd_const_cfunc_ftype *fun, const char *doc, struct cmd_list_element **prefixlist, const char *prefixname, int allow_unknown, struct cmd_list_element **list)
struct compunit_symtab * find_pc_compunit_symtab(CORE_ADDR pc)
static void remove_prev_frame(void *arg)
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_const_sfunc_ftype *set_func, show_value_ftype *show_func, struct cmd_list_element **set_list, struct cmd_list_element **show_list)
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)
const char * unwind_stop_reason_to_string(enum unwind_stop_reason reason)
struct cmd_list_element * setlist
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_const_sfunc_ftype *set_func, show_value_ftype *show_func, struct cmd_list_element **set_list, struct cmd_list_element **show_list)
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)
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
struct symtab_and_line find_pc_line(CORE_ADDR pc, int notcurrent)
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,...)
static ULONGEST extract_unsigned_integer(const gdb_byte *addr, int len, enum bfd_endian byte_order)
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)
struct frame_info::@58 prev_pc
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)
gdb_byte * value_contents_writeable(struct value *value)
static int inside_main_func(struct frame_info *this_frame)
struct frame_info * get_next_frame_sentinel_okay(struct frame_info *this_frame)
struct frame_id frame_id_build_unavailable_stack_special(CORE_ADDR code_addr, CORE_ADDR special_addr)
static void set_backtrace_cmd(const char *args, int from_tty)
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)
struct frame_info * create_new_frame(CORE_ADDR addr, CORE_ADDR pc)
CORE_ADDR get_frame_args_address(struct frame_info *fi)
#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)
#define gdb_print_host_address(ADDR, STREAM)
struct frame_info::@59 prev_func
static struct frame_info * create_sentinel_frame(struct program_space *pspace, struct regcache *regcache)
const address_space * aspace() const
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)
symtab_and_line find_frame_sal(frame_info *frame)
unsigned long hash(const void *addr, int length)
CORE_ADDR get_frame_base_address(struct frame_info *fi)
static struct obstack frame_cache_obstack
const address_space * aspace
std::unique_ptr< struct regcache > frame_save_as_regcache(struct frame_info *this_frame)
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)
struct frame_info * skip_tailcall_frames(struct frame_info *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)
struct bound_minimal_symbol lookup_minimal_symbol_by_pc(CORE_ADDR pc)
enum unwind_stop_reason stop_reason
void _initialize_frame(void)
enum language get_frame_language(struct frame_info *frame)
int deprecated_frame_register_read(struct frame_info *frame, int regnum, gdb_byte *myaddr)
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)
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)
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_const_sfunc_ftype *set_func, show_value_ftype *show_func, struct cmd_list_element **set_list, struct cmd_list_element **show_list)
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)
static LONGEST extract_signed_integer(const gdb_byte *addr, int len, enum bfd_endian byte_order)
void fprint_frame_id(struct ui_file *file, struct frame_id id)
int ptid_equal(const ptid_t &ptid1, const ptid_t &ptid2)
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
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)
void validate_registers_access(void)
static struct frame_info * sentinel_frame
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)
gdb_byte * value_contents_raw(struct value *value)
#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)
void write_memory(CORE_ADDR memaddr, const bfd_byte *myaddr, ssize_t len)
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)
struct frame_info * skip_unwritable_frames(struct frame_info *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,...)
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)
int gdbarch_code_of_frame_writable(struct gdbarch *gdbarch, struct frame_info *frame)
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)