GDB (xrefs)
|
#include "defs.h"
#include "dwarf2expr.h"
#include "dwarf2.h"
#include "frame.h"
#include "frame-base.h"
#include "frame-unwind.h"
#include "gdbcore.h"
#include "gdbtypes.h"
#include "symtab.h"
#include "objfiles.h"
#include "regcache.h"
#include "value.h"
#include "gdb_assert.h"
#include "gdb_string.h"
#include "complaints.h"
#include "dwarf2-frame.h"
#include "ax.h"
#include "dwarf2loc.h"
#include "exceptions.h"
#include "dwarf2-frame-tailcall.h"
Go to the source code of this file.
#define cfa_exp_len cfa_reg |
Definition at line 220 of file dwarf2-frame.c.
#define DW64_CIE_ID 0xffffffffffffffffULL |
Definition at line 1806 of file dwarf2-frame.c.
Referenced by decode_frame_entry_1().
enum eh_frame_type |
Definition at line 1811 of file dwarf2-frame.c.
void _initialize_dwarf2_frame | ( | void | ) |
static void add_cie | ( | struct dwarf2_cie_table * | cie_table, |
struct dwarf2_cie * | cie | ||
) | [static] |
Definition at line 1718 of file dwarf2-frame.c.
References dwarf2_cie::cie_pointer, dwarf2_cie_table::entries, gdb_assert, dwarf2_cie_table::num_entries, and xrealloc().
Referenced by decode_frame_entry_1().
static void add_fde | ( | struct dwarf2_fde_table * | fde_table, |
struct dwarf2_fde * | fde | ||
) | [static] |
Definition at line 1793 of file dwarf2-frame.c.
References dwarf2_fde::address_range, dwarf2_fde_table::entries, dwarf2_fde_table::num_entries, and xrealloc().
Referenced by decode_frame_entry_1().
static int bsearch_cie_cmp | ( | const void * | key, |
const void * | element | ||
) | [static] |
Definition at line 1684 of file dwarf2-frame.c.
References dwarf2_cie::cie_pointer, and ULONGEST.
Referenced by find_cie().
static int bsearch_fde_cmp | ( | const void * | key, |
const void * | element | ||
) | [static] |
Definition at line 1732 of file dwarf2-frame.c.
References dwarf2_fde::address_range, and dwarf2_fde::initial_location.
Referenced by dwarf2_frame_find_fde().
static void clear_pointer_cleanup | ( | void * | arg | ) | [static] |
Definition at line 998 of file dwarf2-frame.c.
Referenced by dwarf2_frame_cache().
static const gdb_byte * decode_frame_entry | ( | struct comp_unit * | unit, |
const gdb_byte * | start, | ||
int | eh_frame_p, | ||
struct dwarf2_cie_table * | cie_table, | ||
struct dwarf2_fde_table * | fde_table, | ||
enum eh_frame_type | entry_type | ||
) | [static] |
Definition at line 2132 of file dwarf2-frame.c.
References _, complaint(), decode_frame_entry_1(), comp_unit::dwarf_frame_buffer, comp_unit::dwarf_frame_section, comp_unit::dwarf_frame_size, and symfile_complaints.
Referenced by decode_frame_entry_1(), and dwarf2_build_frame_info().
static const gdb_byte* decode_frame_entry_1 | ( | struct comp_unit * | unit, |
const gdb_byte * | start, | ||
int | eh_frame_p, | ||
struct dwarf2_cie_table * | cie_table, | ||
struct dwarf2_fde_table * | fde_table, | ||
enum eh_frame_type | entry_type | ||
) | [static] |
Definition at line 1829 of file dwarf2-frame.c.
References _, comp_unit::abfd, add_cie(), add_fde(), dwarf2_cie::addr_size, dwarf2_fde::address_range, dwarf2_cie::augmentation, dwarf2_fde::cie, dwarf2_cie::cie_pointer, dwarf2_cie::code_alignment_factor, dwarf2_cie::data_alignment_factor, decode_frame_entry(), DW64_CIE_ID, dwarf2_frame_adjust_regnum(), comp_unit::dwarf_frame_buffer, comp_unit::dwarf_frame_size, EH_CIE_TYPE_ID, EH_FDE_TYPE_ID, dwarf2_fde::eh_frame_p, dwarf2_cie::encoding, encoding, dwarf2_cie::end, dwarf2_fde::end, error(), find_cie(), gdb_assert, gdb_read_sleb128(), gdb_read_uleb128(), gdbarch_dwarf2_addr_size(), gdbarch_ptr_bit(), get_objfile_arch(), dwarf2_cie::initial_instructions, dwarf2_fde::initial_location, dwarf2_fde::instructions, LONGEST, comp_unit::objfile, objfile::objfile_obstack, dwarf2_cie::ptr_size, read_1_byte(), read_4_bytes(), read_8_bytes(), read_encoded_value(), read_initial_length(), dwarf2_cie::return_address_register, dwarf2_cie::saw_z_augmentation, dwarf2_cie::segment_size, dwarf2_cie::signal_frame, ULONGEST, dwarf2_cie::unit, and dwarf2_cie::version.
Referenced by decode_frame_entry().
void dwarf2_append_unwinders | ( | struct gdbarch * | gdbarch | ) |
Definition at line 1446 of file dwarf2-frame.c.
References dwarf2_tailcall_frame_unwind, and frame_unwind_append_unwinder().
Referenced by aarch64_gdbarch_init(), alpha_dwarf2_init_abi(), arm_gdbarch_init(), bfin_gdbarch_init(), cris_gdbarch_init(), h8300_gdbarch_init(), hppabsd_init_abi(), i386_gdbarch_init(), iq2000_gdbarch_init(), m68hc11_gdbarch_init(), m68k_gdbarch_init(), microblaze_gdbarch_init(), mips_gdbarch_init(), mn10300_frame_unwind_init(), msp430_gdbarch_init(), mt_gdbarch_init(), nios2_gdbarch_init(), rl78_gdbarch_init(), rs6000_gdbarch_init(), rx_gdbarch_init(), s390_gdbarch_init(), score_gdbarch_init(), sh64_gdbarch_init(), sh_gdbarch_init(), sparc32_linux_init_abi(), sparc64_linux_init_abi(), tic6x_gdbarch_init(), tilegx_gdbarch_init(), v850_gdbarch_init(), xstormy16_gdbarch_init(), and xtensa_gdbarch_init().
void dwarf2_build_frame_info | ( | struct objfile * | objfile | ) |
Definition at line 2248 of file dwarf2-frame.c.
References _, comp_unit::abfd, dwarf2_fde::address_range, comp_unit::dbase, decode_frame_entry(), DWARF2_DEBUG_FRAME, DWARF2_EH_FRAME, dwarf2_get_section_info(), comp_unit::dwarf_frame_buffer, comp_unit::dwarf_frame_section, comp_unit::dwarf_frame_size, EH_CIE_OR_FDE_TYPE_ID, dwarf2_cie_table::entries, dwarf2_fde_table::entries, dwarf2_fde::initial_location, gdb_exception::message, dwarf2_cie_table::num_entries, dwarf2_fde_table::num_entries, objfile::obfd, comp_unit::objfile, objfile_name(), objfile::objfile_obstack, qsort, qsort_fde_cmp(), gdb_exception::reason, RETURN_MASK_ERROR, objfile::separate_debug_objfile_backlink, comp_unit::tbase, TRY_CATCH, warning(), xfree(), and xrealloc().
Referenced by coff_symfile_read(), dwarf2_frame_find_fde(), macho_symfile_read(), and xcoff_initial_scan().
void dwarf2_compile_cfa_to_ax | ( | struct agent_expr * | expr, |
struct axs_value * | loc, | ||
struct gdbarch * | gdbarch, | ||
CORE_ADDR | pc, | ||
struct dwarf2_per_cu_data * | data | ||
) |
Definition at line 886 of file dwarf2-frame.c.
References _, dwarf2_cie::addr_size, dwarf2_frame_state::armcc_cfa_offsets_reversed, ax_const_l(), ax_reg(), ax_simple(), dwarf2_frame_state::dwarf2_frame_state_reg_info::cfa_exp, dwarf2_frame_state::dwarf2_frame_state_reg_info::cfa_how, dwarf2_frame_state::dwarf2_frame_state_reg_info::cfa_offset, dwarf2_frame_state::dwarf2_frame_state_reg_info::cfa_reg, dwarf2_fde::cie, dwarf2_frame_state::code_align, dwarf2_cie::code_alignment_factor, dwarf2_frame_state::data_align, dwarf2_cie::data_alignment_factor, dwarf2_compile_expr_to_ax(), dwarf2_frame_find_fde(), dwarf2_frame_find_quirks(), dwarf2_frame_state_copy_regs(), dwarf2_cie::end, dwarf2_fde::end, error(), execute_cfa_program(), gdbarch_dwarf2_reg_to_regnum(), dwarf2_frame_state::initial, dwarf2_cie::initial_instructions, dwarf2_fde::instructions, internal_error(), memset(), dwarf2_frame_state::pc, dwarf2_frame_state::dwarf2_frame_state_reg_info::reg, regnum, dwarf2_frame_state::regs, dwarf2_frame_state::retaddr_column, dwarf2_cie::return_address_register, and text_offset.
Referenced by dwarf2_compile_expr_to_ax().
static int dwarf2_frame_adjust_regnum | ( | struct gdbarch * | gdbarch, |
int | regnum, | ||
int | eh_frame_p | ||
) | [static] |
Definition at line 841 of file dwarf2-frame.c.
References dwarf2_frame_ops::adjust_regnum, gdbarch_data(), and regnum.
Referenced by decode_frame_entry_1(), dwarf2_restore_rule(), and execute_cfa_program().
static CORE_ADDR dwarf2_frame_base_address | ( | struct frame_info * | this_frame, |
void ** | this_cache | ||
) | [static] |
Definition at line 1464 of file dwarf2-frame.c.
References dwarf2_frame_cache::cfa, and dwarf2_frame_cache().
struct frame_base* dwarf2_frame_base_sniffer | ( | struct frame_info * | this_frame | ) | [read] |
Definition at line 1481 of file dwarf2-frame.c.
References dwarf2_frame_base, dwarf2_frame_find_fde(), and get_frame_address_in_block().
Referenced by alpha_dwarf2_init_abi(), microblaze_gdbarch_init(), mips_gdbarch_init(), s390_gdbarch_init(), and score_gdbarch_init().
static struct dwarf2_frame_cache* dwarf2_frame_cache | ( | struct frame_info * | this_frame, |
void ** | this_cache | ||
) | [static, read] |
Definition at line 1006 of file dwarf2-frame.c.
References _, dwarf2_cie::addr_size, dwarf2_frame_cache::addr_size, dwarf2_frame_state::armcc_cfa_offsets_reversed, dwarf2_frame_cache::cfa, dwarf2_frame_state::dwarf2_frame_state_reg_info::cfa_exp, dwarf2_frame_state::dwarf2_frame_state_reg_info::cfa_how, dwarf2_frame_state::dwarf2_frame_state_reg_info::cfa_offset, dwarf2_frame_state::dwarf2_frame_state_reg_info::cfa_reg, dwarf2_fde::cie, clear_pointer_cleanup(), dwarf2_frame_state::code_align, dwarf2_cie::code_alignment_factor, complaint(), dwarf2_frame_state::data_align, dwarf2_cie::data_alignment_factor, discard_cleanups(), do_cleanups(), dwarf2_frame_find_fde(), dwarf2_frame_find_quirks(), dwarf2_frame_init_reg(), DWARF2_FRAME_REG_RA, DWARF2_FRAME_REG_RA_OFFSET, DWARF2_FRAME_REG_SAME_VALUE, DWARF2_FRAME_REG_SAVED_REG, DWARF2_FRAME_REG_UNDEFINED, DWARF2_FRAME_REG_UNSPECIFIED, dwarf2_frame_state_copy_regs(), dwarf2_frame_state_free(), dwarf2_tailcall_sniffer_first(), dwarf2_cie::end, dwarf2_fde::end, gdb_exception::error, execute_cfa_program(), execute_stack_op(), FRAME_OBSTACK_CALLOC, FRAME_OBSTACK_ZALLOC, gdb_assert, gdbarch_dwarf2_reg_to_regnum(), gdbarch_num_pseudo_regs(), gdbarch_num_regs(), gdbarch_register_name(), gdbarch_sp_regnum(), get_frame_address_in_block(), get_frame_arch(), get_frame_func_if_available(), dwarf2_frame_state_reg::how, dwarf2_frame_state::initial, dwarf2_cie::initial_instructions, dwarf2_fde::instructions, internal_error(), dwarf2_frame_state_reg::loc, LONGEST, make_cleanup(), NOT_AVAILABLE_ERROR, gdbarch::num_regs, dwarf2_frame_state::dwarf2_frame_state_reg_info::num_regs, paddress(), dwarf2_frame_state::pc, read_reg(), gdb_exception::reason, dwarf2_frame_state_reg::reg, dwarf2_frame_state::dwarf2_frame_state_reg_info::reg, dwarf2_frame_cache::reg, regnum, dwarf2_frame_state::regs, dwarf2_frame_state::retaddr_column, dwarf2_frame_cache::retaddr_reg, dwarf2_cie::return_address_register, RETURN_MASK_ERROR, symfile_complaints, dwarf2_frame_cache::tailcall_cache, dwarf2_frame_cache::text_offset, throw_exception(), TRY_CATCH, dwarf2_frame_cache::unavailable_retaddr, dwarf2_frame_cache::undefined_retaddr, and XZALLOC.
Referenced by dwarf2_frame_base_address(), dwarf2_frame_dealloc_cache(), dwarf2_frame_prev_register(), dwarf2_frame_sniffer(), dwarf2_frame_this_id(), and dwarf2_frame_unwind_stop_reason().
CORE_ADDR dwarf2_frame_cfa | ( | struct frame_info * | this_frame | ) |
Definition at line 1496 of file dwarf2-frame.c.
References _, dwarf2_tailcall_frame_unwind, error(), frame_unwinder_is(), get_frame_base(), get_frame_type(), get_frame_unwind_stop_reason(), get_prev_frame(), INLINE_FRAME, NOT_AVAILABLE_ERROR, and throw_error().
Referenced by dwarf2_tailcall_prev_register_first(), and dwarf_expr_frame_cfa().
static void dwarf2_frame_dealloc_cache | ( | struct frame_info * | self, |
void * | this_cache | ||
) | [static] |
Definition at line 1375 of file dwarf2-frame.c.
References frame_unwind::dealloc_cache, dwarf2_frame_cache(), dwarf2_tailcall_frame_unwind, and dwarf2_frame_cache::tailcall_cache.
static void dwarf2_frame_default_init_reg | ( | struct gdbarch * | gdbarch, |
int | regnum, | ||
struct dwarf2_frame_state_reg * | reg, | ||
struct frame_info * | this_frame | ||
) | [static] |
Definition at line 723 of file dwarf2-frame.c.
References DWARF2_FRAME_REG_CFA, DWARF2_FRAME_REG_RA, gdbarch_pc_regnum(), gdbarch_sp_regnum(), and dwarf2_frame_state_reg::how.
Referenced by dwarf2_frame_init().
static struct dwarf2_fde * dwarf2_frame_find_fde | ( | CORE_ADDR * | pc, |
CORE_ADDR * | out_offset | ||
) | [static, read] |
Definition at line 1748 of file dwarf2-frame.c.
References ALL_OBJFILES, ANOFFSET, bsearch_fde_cmp(), dwarf2_build_frame_info(), dwarf2_fde_table::entries, gdb_assert, dwarf2_fde::initial_location, dwarf2_fde_table::num_entries, offset, SECT_OFF_TEXT, and objfile::section_offsets.
Referenced by dwarf2_compile_cfa_to_ax(), dwarf2_frame_base_sniffer(), dwarf2_frame_cache(), and dwarf2_frame_sniffer().
static void dwarf2_frame_find_quirks | ( | struct dwarf2_frame_state * | fs, |
struct dwarf2_fde * | fde | ||
) | [static] |
Definition at line 852 of file dwarf2-frame.c.
References dwarf2_frame_state::armcc_cfa_offsets_reversed, dwarf2_frame_state::armcc_cfa_offsets_sf, dwarf2_cie::augmentation, dwarf2_fde::cie, find_pc_symtab(), dwarf2_frame_state::pc, symtab::producer, producer_is_realview(), strchr(), and dwarf2_cie::version.
Referenced by dwarf2_compile_cfa_to_ax(), and dwarf2_frame_cache().
static void* dwarf2_frame_init | ( | struct obstack * | obstack | ) | [static] |
Definition at line 762 of file dwarf2-frame.c.
References dwarf2_frame_default_init_reg(), dwarf2_frame_ops::init_reg, and OBSTACK_ZALLOC.
static void dwarf2_frame_init_reg | ( | struct gdbarch * | gdbarch, |
int | regnum, | ||
struct dwarf2_frame_state_reg * | reg, | ||
struct frame_info * | this_frame | ||
) | [static] |
Definition at line 788 of file dwarf2-frame.c.
References gdbarch_data(), and dwarf2_frame_ops::init_reg.
Referenced by dwarf2_frame_cache().
static struct value* dwarf2_frame_prev_register | ( | struct frame_info * | this_frame, |
void ** | this_cache, | ||
int | regnum | ||
) | [static, read] |
Definition at line 1277 of file dwarf2-frame.c.
References _, dwarf2_frame_cache::addr_size, dwarf2_frame_cache::cfa, dwarf2_frame_cache(), DWARF2_FRAME_REG_CFA, DWARF2_FRAME_REG_CFA_OFFSET, DWARF2_FRAME_REG_FN, DWARF2_FRAME_REG_RA_OFFSET, DWARF2_FRAME_REG_SAME_VALUE, DWARF2_FRAME_REG_SAVED_EXP, DWARF2_FRAME_REG_SAVED_OFFSET, DWARF2_FRAME_REG_SAVED_REG, DWARF2_FRAME_REG_SAVED_VAL_EXP, DWARF2_FRAME_REG_SAVED_VAL_OFFSET, DWARF2_FRAME_REG_UNDEFINED, DWARF2_FRAME_REG_UNSPECIFIED, dwarf2_tailcall_prev_register_first(), execute_stack_op(), dwarf2_frame_state_reg::exp, dwarf2_frame_state_reg::exp_len, dwarf2_frame_state_reg::fn, frame_unwind_got_address(), frame_unwind_got_constant(), frame_unwind_got_memory(), frame_unwind_got_optimized(), frame_unwind_got_register(), gdbarch_dwarf2_reg_to_regnum(), get_frame_arch(), get_frame_register_unsigned(), dwarf2_frame_state_reg::how, internal_error(), dwarf2_frame_state_reg::loc, dwarf2_frame_state_reg::offset, dwarf2_frame_state_reg::reg, dwarf2_frame_cache::reg, regnum, dwarf2_frame_cache::retaddr_reg, dwarf2_frame_cache::tailcall_cache, and dwarf2_frame_cache::text_offset.
void dwarf2_frame_set_adjust_regnum | ( | struct gdbarch * | gdbarch, |
int(*)(struct gdbarch *, int, int) | adjust_regnum | ||
) |
Definition at line 828 of file dwarf2-frame.c.
References dwarf2_frame_ops::adjust_regnum, and gdbarch_data().
Referenced by rs6000_gdbarch_init(), and s390_gdbarch_init().
void dwarf2_frame_set_init_reg | ( | struct gdbarch * | gdbarch, |
void(*)(struct gdbarch *, int, struct dwarf2_frame_state_reg *, struct frame_info *) | init_reg | ||
) |
Definition at line 775 of file dwarf2-frame.c.
References gdbarch_data(), and dwarf2_frame_ops::init_reg.
Referenced by aarch64_gdbarch_init(), arm_gdbarch_init(), cris_gdbarch_init(), hppabsd_init_abi(), rs6000_gdbarch_init(), s390_gdbarch_init(), sh_gdbarch_init(), sparc32_gdbarch_init(), sparc64_init_abi(), and tic6x_gdbarch_init().
void dwarf2_frame_set_signal_frame_p | ( | struct gdbarch * | gdbarch, |
int(*)(struct gdbarch *, struct frame_info *) | signal_frame_p | ||
) |
Definition at line 801 of file dwarf2-frame.c.
References gdbarch_data(), and dwarf2_frame_ops::signal_frame_p.
Referenced by i386_darwin_init_abi(), i386_linux_init_abi(), and x86_darwin_init_abi_64().
static int dwarf2_frame_signal_frame_p | ( | struct gdbarch * | gdbarch, |
struct frame_info * | this_frame | ||
) | [static] |
Definition at line 814 of file dwarf2-frame.c.
References gdbarch_data(), and dwarf2_frame_ops::signal_frame_p.
Referenced by dwarf2_frame_sniffer().
static int dwarf2_frame_sniffer | ( | const struct frame_unwind * | self, |
struct frame_info * | this_frame, | ||
void ** | this_cache | ||
) | [static] |
Definition at line 1384 of file dwarf2-frame.c.
References dwarf2_fde::cie, dwarf2_frame_cache(), dwarf2_frame_find_fde(), dwarf2_frame_signal_frame_p(), get_frame_address_in_block(), get_frame_arch(), NORMAL_FRAME, dwarf2_cie::signal_frame, and SIGTRAMP_FRAME.
static void dwarf2_frame_state_alloc_regs | ( | struct dwarf2_frame_state_reg_info * | rs, |
int | num_regs | ||
) | [static] |
Definition at line 226 of file dwarf2-frame.c.
References memset(), size, and xrealloc().
Referenced by dwarf2_restore_rule(), and execute_cfa_program().
static struct dwarf2_frame_state_reg* dwarf2_frame_state_copy_regs | ( | struct dwarf2_frame_state_reg_info * | rs | ) | [static, read] |
Definition at line 246 of file dwarf2-frame.c.
References memcpy(), dwarf2_frame_state_reg::reg, size, and xmalloc().
Referenced by dwarf2_compile_cfa_to_ax(), dwarf2_frame_cache(), and execute_cfa_program().
static void dwarf2_frame_state_free | ( | void * | p | ) | [static] |
Definition at line 274 of file dwarf2-frame.c.
References dwarf2_frame_state_free_regs(), dwarf2_frame_state::initial, dwarf2_frame_state::dwarf2_frame_state_reg_info::prev, dwarf2_frame_state::dwarf2_frame_state_reg_info::reg, dwarf2_frame_state::regs, and xfree().
Referenced by dwarf2_frame_cache().
static void dwarf2_frame_state_free_regs | ( | struct dwarf2_frame_state_reg_info * | rs | ) | [static] |
Definition at line 260 of file dwarf2-frame.c.
References xfree().
Referenced by dwarf2_frame_state_free(), and execute_cfa_program().
static void dwarf2_frame_this_id | ( | struct frame_info * | this_frame, |
void ** | this_cache, | ||
struct frame_id * | this_id | ||
) | [static] |
Definition at line 1261 of file dwarf2-frame.c.
References dwarf2_frame_cache::cfa, dwarf2_frame_cache(), frame_id_build(), get_frame_func(), dwarf2_frame_cache::unavailable_retaddr, and dwarf2_frame_cache::undefined_retaddr.
static enum unwind_stop_reason dwarf2_frame_unwind_stop_reason | ( | struct frame_info * | this_frame, |
void ** | this_cache | ||
) | [static] |
Definition at line 1245 of file dwarf2-frame.c.
References dwarf2_frame_cache(), dwarf2_frame_cache::unavailable_retaddr, and dwarf2_frame_cache::undefined_retaddr.
static void dwarf2_restore_rule | ( | struct gdbarch * | gdbarch, |
ULONGEST | reg_num, | ||
struct dwarf2_frame_state * | fs, | ||
int | eh_frame_p | ||
) | [static] |
Definition at line 318 of file dwarf2-frame.c.
References _, complaint(), dwarf2_frame_adjust_regnum(), DWARF2_FRAME_REG_UNSPECIFIED, dwarf2_frame_state_alloc_regs(), gdb_assert, gdbarch_dwarf2_reg_to_regnum(), gdbarch_register_name(), dwarf2_frame_state_reg::how, dwarf2_frame_state::initial, paddress(), dwarf2_frame_state::pc, dwarf2_frame_state::dwarf2_frame_state_reg_info::reg, dwarf2_frame_state::regs, symfile_complaints, and ULONGEST.
Referenced by execute_cfa_program().
static gdb_byte encoding_for_size | ( | unsigned int | size | ) | [static] |
Definition at line 1569 of file dwarf2-frame.c.
References _, and internal_error().
Referenced by read_encoded_value().
static const gdb_byte* execute_cfa_program | ( | struct dwarf2_fde * | fde, |
const gdb_byte * | insn_ptr, | ||
const gdb_byte * | insn_end, | ||
struct gdbarch * | gdbarch, | ||
CORE_ADDR | pc, | ||
struct dwarf2_frame_state * | fs | ||
) | [static] |
Definition at line 408 of file dwarf2-frame.c.
References _, ANOFFSET, dwarf2_frame_state::armcc_cfa_offsets_sf, dwarf2_frame_state::dwarf2_frame_state_reg_info::cfa_exp, dwarf2_frame_state::dwarf2_frame_state_reg_info::cfa_how, dwarf2_frame_state::dwarf2_frame_state_reg_info::cfa_offset, dwarf2_frame_state::dwarf2_frame_state_reg_info::cfa_reg, dwarf2_fde::cie, dwarf2_frame_state::code_align, complaint(), dwarf2_frame_state::data_align, dwarf2_frame_adjust_regnum(), DWARF2_FRAME_REG_SAME_VALUE, DWARF2_FRAME_REG_SAVED_EXP, DWARF2_FRAME_REG_SAVED_OFFSET, DWARF2_FRAME_REG_SAVED_REG, DWARF2_FRAME_REG_SAVED_VAL_EXP, DWARF2_FRAME_REG_SAVED_VAL_OFFSET, DWARF2_FRAME_REG_UNDEFINED, dwarf2_frame_state_alloc_regs(), dwarf2_frame_state_copy_regs(), dwarf2_frame_state_free_regs(), dwarf2_restore_rule(), dwarf2_fde::eh_frame_p, dwarf2_cie::encoding, dwarf2_frame_state_reg::exp, dwarf2_frame_state_reg::exp_len, extract_unsigned_integer(), gdbarch_byte_order(), dwarf2_frame_state_reg::how, dwarf2_frame_state::initial, dwarf2_fde::initial_location, internal_error(), dwarf2_frame_state_reg::loc, comp_unit::objfile, offset, dwarf2_frame_state_reg::offset, paddress(), dwarf2_frame_state::pc, dwarf2_frame_state::dwarf2_frame_state_reg_info::prev, dwarf2_cie::ptr_size, read_encoded_value(), dwarf2_frame_state_reg::reg, dwarf2_frame_state::dwarf2_frame_state_reg_info::reg, register_size(), dwarf2_frame_state::regs, safe_read_sleb128(), safe_read_uleb128(), SECT_OFF_TEXT, objfile::section_offsets, size, symfile_complaints, dwarf2_cie::unit, xfree(), and XMALLOC.
Referenced by dwarf2_compile_cfa_to_ax(), and dwarf2_frame_cache().
static CORE_ADDR execute_stack_op | ( | const gdb_byte * | exp, |
ULONGEST | len, | ||
int | addr_size, | ||
CORE_ADDR | offset, | ||
struct frame_info * | this_frame, | ||
CORE_ADDR | initial, | ||
int | initial_in_stack_memory | ||
) | [static] |
Definition at line 362 of file dwarf2-frame.c.
References _, dwarf_expr_context::addr_size, dwarf_expr_context::baton, do_cleanups(), dwarf2_frame_ctx_funcs, dwarf_expr_eval(), dwarf_expr_fetch(), dwarf_expr_fetch_address(), dwarf_expr_push_address(), DWARF_VALUE_MEMORY, DWARF_VALUE_REGISTER, error(), dwarf_expr_context::funcs, dwarf_expr_context::gdbarch, get_frame_arch(), dwarf_expr_context::location, make_cleanup_free_dwarf_expr_context(), make_cleanup_value_free_to_mark(), new_dwarf_expr_context(), offset, dwarf_expr_context::offset, read_reg(), dwarf_expr_context::ref_addr_size, value_as_long(), and value_mark().
Referenced by dwarf2_frame_cache(), and dwarf2_frame_prev_register().
static struct dwarf2_cie* find_cie | ( | struct dwarf2_cie_table * | cie_table, |
ULONGEST | cie_pointer | ||
) | [static, read] |
Definition at line 1697 of file dwarf2-frame.c.
References bsearch_cie_cmp(), dwarf2_cie_table::entries, gdb_assert, and dwarf2_cie_table::num_entries.
Referenced by decode_frame_entry_1().
static int qsort_fde_cmp | ( | const void * | a, |
const void * | b | ||
) | [static] |
Definition at line 2227 of file dwarf2-frame.c.
References dwarf2_fde::address_range, dwarf2_fde::eh_frame_p, and dwarf2_fde::initial_location.
Referenced by dwarf2_build_frame_info().
static unsigned int read_1_byte | ( | bfd * | abfd, |
const gdb_byte * | buf | ||
) | [static] |
Definition at line 1516 of file dwarf2-frame.c.
Referenced by decode_frame_entry_1().
static unsigned int read_4_bytes | ( | bfd * | abfd, |
const gdb_byte * | buf | ||
) | [static] |
Definition at line 1522 of file dwarf2-frame.c.
Referenced by decode_frame_entry_1().
static ULONGEST read_8_bytes | ( | bfd * | abfd, |
const gdb_byte * | buf | ||
) | [static] |
Definition at line 1528 of file dwarf2-frame.c.
Referenced by decode_frame_entry_1().
static CORE_ADDR read_encoded_value | ( | struct comp_unit * | unit, |
gdb_byte | encoding, | ||
int | ptr_len, | ||
const gdb_byte * | buf, | ||
unsigned int * | bytes_read_ptr, | ||
CORE_ADDR | func_base | ||
) | [static] |
Definition at line 1585 of file dwarf2-frame.c.
References _, comp_unit::abfd, comp_unit::dbase, comp_unit::dwarf_frame_buffer, comp_unit::dwarf_frame_section, encoding_for_size(), internal_error(), offset, safe_read_sleb128(), safe_read_uleb128(), and comp_unit::tbase.
Referenced by decode_frame_entry_1(), and execute_cfa_program().
static ULONGEST read_initial_length | ( | bfd * | abfd, |
const gdb_byte * | buf, | ||
unsigned int * | bytes_read_ptr | ||
) | [static] |
Definition at line 1534 of file dwarf2-frame.c.
References LONGEST.
Referenced by decode_frame_entry_1().
Definition at line 310 of file dwarf2-frame.c.
References read_memory().
Definition at line 289 of file dwarf2-frame.c.
References gdbarch_dwarf2_reg_to_regnum(), get_frame_arch(), get_frame_register(), register_size(), register_type(), regnum, and unpack_long().
Referenced by cleanup_block_load_pc(), dwarf2_frame_cache(), and execute_stack_op().
struct frame_base dwarf2_frame_base [static] |
{ &dwarf2_frame_unwind, dwarf2_frame_base_address, dwarf2_frame_base_address, dwarf2_frame_base_address }
Definition at line 1472 of file dwarf2-frame.c.
Referenced by dwarf2_frame_base_sniffer().
struct dwarf_expr_context_funcs dwarf2_frame_ctx_funcs [static] |
{ read_reg, read_mem, ctx_no_get_frame_base, ctx_no_get_frame_cfa, ctx_no_get_frame_pc, ctx_no_get_tls_address, ctx_no_dwarf_call, ctx_no_get_base_type, ctx_no_push_dwarf_reg_entry_value, ctx_no_get_addr_index }
Definition at line 347 of file dwarf2-frame.c.
Referenced by execute_stack_op().
struct gdbarch_data* dwarf2_frame_data [static] |
Definition at line 703 of file dwarf2-frame.c.
struct objfile_data* dwarf2_frame_objfile_data |
Definition at line 1513 of file dwarf2-frame.c.
struct frame_unwind dwarf2_frame_unwind [static] |
{ NORMAL_FRAME, dwarf2_frame_unwind_stop_reason, dwarf2_frame_this_id, dwarf2_frame_prev_register, NULL, dwarf2_frame_sniffer, dwarf2_frame_dealloc_cache }
Definition at line 1419 of file dwarf2-frame.c.
struct frame_unwind dwarf2_signal_frame_unwind [static] |
{ SIGTRAMP_FRAME, dwarf2_frame_unwind_stop_reason, dwarf2_frame_this_id, dwarf2_frame_prev_register, NULL, dwarf2_frame_sniffer, NULL }
Definition at line 1430 of file dwarf2-frame.c.