GDB (xrefs)
Loading...
Searching...
No Matches
Classes | Functions | Variables
frame-unwind.c File Reference
#include "defs.h"
#include "frame.h"
#include "frame-unwind.h"
#include "dummy-frame.h"
#include "inline-frame.h"
#include "value.h"
#include "regcache.h"
#include "gdbsupport/gdb_obstack.h"
#include "target.h"
#include "gdbarch.h"
#include "dwarf2/frame-tailcall.h"
#include "cli/cli-cmds.h"

Go to the source code of this file.

Classes

struct  frame_unwind_table_entry
 
struct  frame_unwind_table
 

Functions

static struct frame_unwind_table_entry ** add_unwinder (struct obstack *obstack, const struct frame_unwind *unwinder, struct frame_unwind_table_entry **link)
 
static struct frame_unwind_tableget_frame_unwind_table (struct gdbarch *gdbarch)
 
void frame_unwind_prepend_unwinder (struct gdbarch *gdbarch, const struct frame_unwind *unwinder)
 
void frame_unwind_append_unwinder (struct gdbarch *gdbarch, const struct frame_unwind *unwinder)
 
static int frame_unwind_try_unwinder (frame_info_ptr this_frame, void **this_cache, const struct frame_unwind *unwinder)
 
void frame_unwind_find_by_frame (frame_info_ptr this_frame, void **this_cache)
 
int default_frame_sniffer (const struct frame_unwind *self, frame_info_ptr this_frame, void **this_prologue_cache)
 
enum unwind_stop_reason default_frame_unwind_stop_reason (frame_info_ptr this_frame, void **this_cache)
 
CORE_ADDR default_unwind_pc (struct gdbarch *gdbarch, frame_info_ptr next_frame)
 
CORE_ADDR default_unwind_sp (struct gdbarch *gdbarch, frame_info_ptr next_frame)
 
struct valueframe_unwind_got_optimized (frame_info_ptr frame, int regnum)
 
struct valueframe_unwind_got_register (frame_info_ptr frame, int regnum, int new_regnum)
 
struct valueframe_unwind_got_memory (frame_info_ptr frame, int regnum, CORE_ADDR addr)
 
struct valueframe_unwind_got_constant (frame_info_ptr frame, int regnum, ULONGEST val)
 
struct valueframe_unwind_got_bytes (frame_info_ptr frame, int regnum, const gdb_byte *buf)
 
struct valueframe_unwind_got_address (frame_info_ptr frame, int regnum, CORE_ADDR addr)
 
static void maintenance_info_frame_unwinders (const char *args, int from_tty)
 
void _initialize_frame_unwind ()
 

Variables

static const registry< gdbarch >::key< struct frame_unwind_tableframe_unwind_data
 

Function Documentation

◆ _initialize_frame_unwind()

void _initialize_frame_unwind ( )

Definition at line 371 of file frame-unwind.c.

Referenced by initialize_all_files().

◆ add_unwinder()

static struct frame_unwind_table_entry ** add_unwinder ( struct obstack * obstack,
const struct frame_unwind * unwinder,
struct frame_unwind_table_entry ** link )
static

Definition at line 53 of file frame-unwind.c.

References frame_unwind_table_entry::unwinder.

Referenced by get_frame_unwind_table().

◆ default_frame_sniffer()

int default_frame_sniffer ( const struct frame_unwind * self,
frame_info_ptr this_frame,
void ** this_prologue_cache )

Definition at line 218 of file frame-unwind.c.

◆ default_frame_unwind_stop_reason()

enum unwind_stop_reason default_frame_unwind_stop_reason ( frame_info_ptr this_frame,
void ** this_cache )

Definition at line 228 of file frame-unwind.c.

References get_frame_id(), and outer_frame_id.

Referenced by pyuw_on_new_gdbarch(), and tramp_frame_prepend_unwinder().

◆ default_unwind_pc()

CORE_ADDR default_unwind_pc ( struct gdbarch * gdbarch,
frame_info_ptr next_frame )

◆ default_unwind_sp()

CORE_ADDR default_unwind_sp ( struct gdbarch * gdbarch,
frame_info_ptr next_frame )

Definition at line 253 of file frame-unwind.c.

References frame_unwind_register_unsigned(), gdbarch_sp_regnum(), and sp_regnum.

◆ frame_unwind_append_unwinder()

void frame_unwind_append_unwinder ( struct gdbarch * gdbarch,
const struct frame_unwind * unwinder )

Definition at line 108 of file frame-unwind.c.

References GDBARCH_OBSTACK_ZALLOC, get_frame_unwind_table(), frame_unwind_table_entry::next, frame_unwind_table::osabi_head, and frame_unwind_table_entry::unwinder.

Referenced by aarch64_gdbarch_init(), alpha_gdbarch_init(), alpha_mdebug_init_abi(), amd64_init_abi(), amd64_windows_init_abi_common(), arc_gdbarch_init(), arm_gdbarch_init(), avr_gdbarch_init(), bfin_gdbarch_init(), BP_MANIPULATION(), bpf_gdbarch_init(), cris_gdbarch_init(), csky_gdbarch_init(), dwarf2_append_unwinders(), frv_gdbarch_init(), frv_linux_init_abi(), ft32_gdbarch_init(), hppa_gdbarch_init(), hppa_linux_init_abi(), i386_gdbarch_init(), ia64_gdbarch_init(), iq2000_gdbarch_init(), lm32_gdbarch_init(), loongarch_gdbarch_init(), m32c_gdbarch_init(), m32r_gdbarch_init(), m32r_linux_init_abi(), m68hc11_gdbarch_init(), m68k_gdbarch_init(), m68k_linux_init_abi(), mep_gdbarch_init(), microblaze_gdbarch_init(), mips_gdbarch_init(), mips_sde_init_abi(), mn10300_frame_unwind_init(), moxie_gdbarch_init(), msp430_gdbarch_init(), nds32_gdbarch_init(), nios2_gdbarch_init(), or1k_gdbarch_init(), ppcfbsd_init_abi(), ppcobsd_init_abi(), riscv_gdbarch_init(), rl78_gdbarch_init(), rs6000_aix_init_osabi(), rs6000_gdbarch_init(), rx_gdbarch_init(), s12z_gdbarch_init(), s390_gdbarch_init(), s390_linux_init_abi_any(), sh_gdbarch_init(), sparc32_gdbarch_init(), sparc32_sol2_init_abi(), sparc32nbsd_init_abi(), sparc32obsd_init_abi(), sparc64_init_abi(), sparc64_sol2_init_abi(), sparc64fbsd_init_abi(), sparc64nbsd_init_abi(), sparc64obsd_init_abi(), tic6x_gdbarch_init(), tilegx_gdbarch_init(), v850_gdbarch_init(), vax_gdbarch_init(), xstormy16_gdbarch_init(), xtensa_gdbarch_init(), and z80_gdbarch_init().

◆ frame_unwind_find_by_frame()

void frame_unwind_find_by_frame ( frame_info_ptr this_frame,
void ** this_cache )

◆ frame_unwind_got_address()

struct value * frame_unwind_got_address ( frame_info_ptr frame,
int regnum,
CORE_ADDR addr )

◆ frame_unwind_got_bytes()

struct value * frame_unwind_got_bytes ( frame_info_ptr frame,
int regnum,
const gdb_byte * buf )

◆ frame_unwind_got_constant()

struct value * frame_unwind_got_constant ( frame_info_ptr frame,
int regnum,
ULONGEST val )

◆ frame_unwind_got_memory()

struct value * frame_unwind_got_memory ( frame_info_ptr frame,
int regnum,
CORE_ADDR addr )

◆ frame_unwind_got_optimized()

struct value * frame_unwind_got_optimized ( frame_info_ptr frame,
int regnum )

◆ frame_unwind_got_register()

struct value * frame_unwind_got_register ( frame_info_ptr frame,
int regnum,
int new_regnum )

◆ frame_unwind_prepend_unwinder()

void frame_unwind_prepend_unwinder ( struct gdbarch * gdbarch,
const struct frame_unwind * unwinder )

◆ frame_unwind_try_unwinder()

static int frame_unwind_try_unwinder ( frame_info_ptr this_frame,
void ** this_cache,
const struct frame_unwind * unwinder )
static

◆ get_frame_unwind_table()

static struct frame_unwind_table * get_frame_unwind_table ( struct gdbarch * gdbarch)
static

◆ maintenance_info_frame_unwinders()

static void maintenance_info_frame_unwinders ( const char * args,
int from_tty )
static

Variable Documentation

◆ frame_unwind_data

const registry<gdbarch>::key<struct frame_unwind_table> frame_unwind_data
static

Definition at line 47 of file frame-unwind.c.

Referenced by get_frame_unwind_table().