GDB (xrefs)
|
#include "defs.h"
#include "ui-out.h"
#include "value.h"
#include "frame.h"
#include "gdbcore.h"
#include "target.h"
#include "inferior.h"
#include "ax.h"
#include "ax-gdb.h"
#include "regcache.h"
#include "objfiles.h"
#include "block.h"
#include "gdbcmd.h"
#include "complaints.h"
#include "dwarf2.h"
#include "dwarf2/expr.h"
#include "dwarf2/loc.h"
#include "dwarf2/read.h"
#include "dwarf2/leb.h"
#include "compile/compile.h"
#include "gdbsupport/selftest.h"
#include <algorithm>
#include <vector>
#include <unordered_set>
#include "gdbsupport/underlying.h"
#include "gdbsupport/byte-vector.h"
Go to the source code of this file.
Enumerations | |
enum | debug_loc_kind { DEBUG_LOC_END_OF_LIST = 0 , DEBUG_LOC_BASE_ADDRESS = 1 , DEBUG_LOC_START_END = 2 , DEBUG_LOC_START_LENGTH = 3 , DEBUG_LOC_OFFSET_PAIR = 4 , DEBUG_LOC_BUFFER_OVERFLOW = -1 , DEBUG_LOC_INVALID_ENTRY = -2 } |
Functions | |
static struct value * | dwarf2_evaluate_loc_desc_full (struct type *type, frame_info_ptr frame, const gdb_byte *data, size_t size, dwarf2_per_cu_data *per_cu, dwarf2_per_objfile *per_objfile, struct type *subobj_type, LONGEST subobj_byte_offset, bool as_lval=true) |
void | invalid_synthetic_pointer (void) |
static enum debug_loc_kind | decode_debug_loc_addresses (const gdb_byte *loc_ptr, const gdb_byte *buf_end, const gdb_byte **new_ptr, unrelocated_addr *lowp, unrelocated_addr *highp, enum bfd_endian byte_order, unsigned int addr_size, int signed_addr_p) |
static enum debug_loc_kind | decode_debug_loclists_addresses (dwarf2_per_cu_data *per_cu, dwarf2_per_objfile *per_objfile, const gdb_byte *loc_ptr, const gdb_byte *buf_end, const gdb_byte **new_ptr, unrelocated_addr *low, unrelocated_addr *high, enum bfd_endian byte_order, unsigned int addr_size, int signed_addr_p) |
static enum debug_loc_kind | decode_debug_loc_dwo_addresses (dwarf2_per_cu_data *per_cu, dwarf2_per_objfile *per_objfile, const gdb_byte *loc_ptr, const gdb_byte *buf_end, const gdb_byte **new_ptr, unrelocated_addr *low, unrelocated_addr *high, enum bfd_endian byte_order) |
const gdb_byte * | dwarf2_find_location_expression (const dwarf2_loclist_baton *baton, size_t *locexpr_length, const CORE_ADDR pc) |
static void | locexpr_find_frame_base_location (struct symbol *framefunc, CORE_ADDR pc, const gdb_byte **start, size_t *length) |
static CORE_ADDR | locexpr_get_frame_base (struct symbol *framefunc, frame_info_ptr frame) |
static void | loclist_find_frame_base_location (struct symbol *framefunc, CORE_ADDR pc, const gdb_byte **start, size_t *length) |
static CORE_ADDR | loclist_get_frame_base (struct symbol *framefunc, frame_info_ptr frame) |
void | func_get_frame_base_dwarf_block (struct symbol *framefunc, CORE_ADDR pc, const gdb_byte **start, size_t *length) |
value * | compute_var_value (const char *name) |
static void | show_entry_values_debug (struct ui_file *file, int from_tty, struct cmd_list_element *c, const char *value) |
static struct symbol * | func_addr_to_tail_call_list (struct gdbarch *gdbarch, CORE_ADDR addr) |
static void | func_verify_no_selftailcall (struct gdbarch *gdbarch, CORE_ADDR verify_addr) |
static void | tailcall_dump (struct gdbarch *gdbarch, const struct call_site *call_site) |
static void | chain_candidate (struct gdbarch *gdbarch, gdb::unique_xmalloc_ptr< struct call_site_chain > *resultp, const std::vector< struct call_site * > &chain) |
static bool | call_site_find_chain_2 (struct gdbarch *gdbarch, gdb::unique_xmalloc_ptr< struct call_site_chain > *resultp, std::vector< struct call_site * > &chain, std::unordered_set< CORE_ADDR > &addr_hash, struct call_site *call_site, CORE_ADDR callee_pc) |
static gdb::unique_xmalloc_ptr< call_site_chain > | call_site_find_chain_1 (struct gdbarch *gdbarch, CORE_ADDR caller_pc, CORE_ADDR callee_pc) |
gdb::unique_xmalloc_ptr< call_site_chain > | call_site_find_chain (struct gdbarch *gdbarch, CORE_ADDR caller_pc, CORE_ADDR callee_pc) |
static int | call_site_parameter_matches (struct call_site_parameter *parameter, enum call_site_parameter_kind kind, union call_site_parameter_u kind_u) |
struct call_site_parameter * | dwarf_expr_reg_to_entry_parameter (frame_info_ptr frame, enum call_site_parameter_kind kind, union call_site_parameter_u kind_u, dwarf2_per_cu_data **per_cu_return, dwarf2_per_objfile **per_objfile_return) |
static struct value * | dwarf_entry_parameter_to_value (struct call_site_parameter *parameter, CORE_ADDR deref_size, struct type *type, frame_info_ptr caller_frame, dwarf2_per_cu_data *per_cu, dwarf2_per_objfile *per_objfile) |
static struct value * | entry_data_value_coerce_ref (const struct value *value) |
static void * | entry_data_value_copy_closure (const struct value *v) |
static void | entry_data_value_free_closure (struct value *v) |
struct value * | value_of_dwarf_reg_entry (struct type *type, frame_info_ptr frame, enum call_site_parameter_kind kind, union call_site_parameter_u kind_u) |
static struct value * | value_of_dwarf_block_entry (struct type *type, frame_info_ptr frame, const gdb_byte *block, size_t block_len) |
static struct value * | fetch_const_value_from_synthetic_pointer (sect_offset die, LONGEST byte_offset, dwarf2_per_cu_data *per_cu, dwarf2_per_objfile *per_objfile, struct type *type) |
struct value * | indirect_synthetic_pointer (sect_offset die, LONGEST byte_offset, dwarf2_per_cu_data *per_cu, dwarf2_per_objfile *per_objfile, frame_info_ptr frame, struct type *type, bool resolve_abstract_p) |
struct value * | dwarf2_evaluate_loc_desc (struct type *type, frame_info_ptr frame, const gdb_byte *data, size_t size, dwarf2_per_cu_data *per_cu, dwarf2_per_objfile *per_objfile, bool as_lval) |
static int | dwarf2_locexpr_baton_eval (const struct dwarf2_locexpr_baton *dlbaton, frame_info_ptr frame, const struct property_addr_info *addr_stack, CORE_ADDR *valp, gdb::array_view< CORE_ADDR > push_values, bool *is_reference) |
bool | dwarf2_evaluate_property (const struct dynamic_prop *prop, frame_info_ptr frame, const struct property_addr_info *addr_stack, CORE_ADDR *value, gdb::array_view< CORE_ADDR > push_values) |
void | dwarf2_compile_property_to_c (string_file *stream, const char *result_name, struct gdbarch *gdbarch, std::vector< bool > ®isters_used, const struct dynamic_prop *prop, CORE_ADDR pc, struct symbol *sym) |
static enum symbol_needs_kind | dwarf2_get_symbol_read_needs (gdb::array_view< const gdb_byte > expr, dwarf2_per_cu_data *per_cu, dwarf2_per_objfile *per_objfile, bfd_endian byte_order, int addr_size, int ref_addr_size, int depth=0) |
static void ATTRIBUTE_NORETURN | unimplemented (unsigned int op) |
int | dwarf_reg_to_regnum (struct gdbarch *arch, int dwarf_reg) |
static void | throw_bad_regnum_error (ULONGEST dwarf_reg) |
int | dwarf_reg_to_regnum_or_error (struct gdbarch *arch, ULONGEST dwarf_reg) |
static void | access_memory (struct gdbarch *arch, struct agent_expr *expr, ULONGEST nbits) |
static void | dwarf2_compile_expr_to_ax (struct agent_expr *expr, struct axs_value *loc, unsigned int addr_size, const gdb_byte *op_ptr, const gdb_byte *op_end, dwarf2_per_cu_data *per_cu, dwarf2_per_objfile *per_objfile) |
static struct value * | locexpr_read_variable (struct symbol *symbol, frame_info_ptr frame) |
static struct value * | locexpr_read_variable_at_entry (struct symbol *symbol, frame_info_ptr frame) |
static enum symbol_needs_kind | locexpr_get_symbol_read_needs (struct symbol *symbol) |
static int | piece_end_p (const gdb_byte *data, const gdb_byte *end) |
static const char * | locexpr_regname (struct gdbarch *gdbarch, int dwarf_regnum) |
static const gdb_byte * | locexpr_describe_location_piece (struct symbol *symbol, struct ui_file *stream, CORE_ADDR addr, dwarf2_per_cu_data *per_cu, dwarf2_per_objfile *per_objfile, const gdb_byte *data, const gdb_byte *end, unsigned int addr_size) |
static const gdb_byte * | disassemble_dwarf_expression (struct ui_file *stream, struct gdbarch *arch, unsigned int addr_size, int offset_size, const gdb_byte *start, const gdb_byte *data, const gdb_byte *end, int indent, int all, dwarf2_per_cu_data *per_cu, dwarf2_per_objfile *per_objfile) |
static void | show_dwarf_always_disassemble (struct ui_file *file, int from_tty, struct cmd_list_element *c, const char *value) |
static void | locexpr_describe_location_1 (struct symbol *symbol, CORE_ADDR addr, struct ui_file *stream, const gdb_byte *data, size_t size, unsigned int addr_size, int offset_size, dwarf2_per_cu_data *per_cu, dwarf2_per_objfile *per_objfile) |
static void | locexpr_describe_location (struct symbol *symbol, CORE_ADDR addr, struct ui_file *stream) |
static void | locexpr_tracepoint_var_ref (struct symbol *symbol, struct agent_expr *ax, struct axs_value *value) |
static void | locexpr_generate_c_location (struct symbol *sym, string_file *stream, struct gdbarch *gdbarch, std::vector< bool > ®isters_used, CORE_ADDR pc, const char *result_name) |
static struct value * | loclist_read_variable (struct symbol *symbol, frame_info_ptr frame) |
static struct value * | loclist_read_variable_at_entry (struct symbol *symbol, frame_info_ptr frame) |
static enum symbol_needs_kind | loclist_symbol_needs (struct symbol *symbol) |
static void | loclist_describe_location (struct symbol *symbol, CORE_ADDR addr, struct ui_file *stream) |
static void | loclist_tracepoint_var_ref (struct symbol *symbol, struct agent_expr *ax, struct axs_value *value) |
static void | loclist_generate_c_location (struct symbol *sym, string_file *stream, struct gdbarch *gdbarch, std::vector< bool > ®isters_used, CORE_ADDR pc, const char *result_name) |
void | _initialize_dwarf2loc () |
Variables | |
const struct symbol_block_ops | dwarf2_block_frame_base_locexpr_funcs |
const struct symbol_block_ops | dwarf2_block_frame_base_loclist_funcs |
unsigned int | entry_values_debug = 0 |
static const struct lval_funcs | entry_data_value_funcs |
static bool | dwarf_always_disassemble |
const struct symbol_computed_ops | dwarf2_locexpr_funcs |
const struct symbol_computed_ops | dwarf2_loclist_funcs |
enum debug_loc_kind |
void _initialize_dwarf2loc | ( | ) |
Definition at line 4122 of file loc.c.
Referenced by initialize_all_files().
|
static |
Definition at line 2325 of file loc.c.
References ax_const_l(), ax_simple(), ax_trace_quick(), ax_zero_ext(), and gdbarch_byte_order().
Referenced by dwarf2_compile_expr_to_ax().
gdb::unique_xmalloc_ptr< call_site_chain > call_site_find_chain | ( | struct gdbarch * | gdbarch, |
CORE_ADDR | caller_pc, | ||
CORE_ADDR | callee_pc ) |
Definition at line 1091 of file loc.c.
References call_site_find_chain_1(), entry_values_debug, exception_print(), and gdb_stdout.
Referenced by dwarf2_tailcall_sniffer_first().
|
static |
Definition at line 1027 of file loc.c.
References call_site::call_site(), call_site_find_chain_2(), call_site_for_pc(), get_pc_function_start(), lookup_minimal_symbol_by_pc(), bound_minimal_symbol::minsym, paddress(), and general_symbol_info::print_name().
Referenced by call_site_find_chain().
|
static |
Definition at line 966 of file loc.c.
References call_site_find_chain_2(), general_symbol_info::chain, chain_candidate(), func_addr_to_tail_call_list(), call_site::iterate_over_addresses(), symbol::type(), and TYPE_TAIL_CALL_LIST.
Referenced by call_site_find_chain_1(), and call_site_find_chain_2().
|
static |
Definition at line 1119 of file loc.c.
References CALL_SITE_PARAMETER_DWARF_REG, CALL_SITE_PARAMETER_FB_OFFSET, CALL_SITE_PARAMETER_PARAM_OFFSET, call_site_parameter_u::dwarf_reg, call_site_parameter_u::fb_offset, call_site_parameter::kind, call_site_parameter_u::param_cu_off, and call_site_parameter::u.
Referenced by dwarf_expr_reg_to_entry_parameter().
|
static |
Definition at line 865 of file loc.c.
References call_site_chain::call_site, call_site_chain::callees, call_site_chain::callers, entry_values_debug, gdb_printf(), gdb_putc(), gdb_puts(), gdb_stdlog, call_site_chain::length, tailcall_dump(), and xmalloc().
Referenced by call_site_find_chain_2().
value * compute_var_value | ( | const char * | name | ) |
Definition at line 625 of file loc.c.
References block_symbol::block, lookup_symbol(), name, block_symbol::symbol, value_of_variable(), and VAR_DOMAIN.
Referenced by dwarf2_evaluate_property(), and sect_variable_value().
|
static |
Definition at line 108 of file loc.c.
References DEBUG_LOC_BASE_ADDRESS, DEBUG_LOC_BUFFER_OVERFLOW, DEBUG_LOC_END_OF_LIST, DEBUG_LOC_OFFSET_PAIR, extract_signed_integer(), and extract_unsigned_integer().
Referenced by dwarf2_find_location_expression(), and loclist_describe_location().
|
static |
Definition at line 291 of file loc.c.
References DEBUG_LOC_BASE_ADDRESS, DEBUG_LOC_BUFFER_OVERFLOW, DEBUG_LOC_END_OF_LIST, DEBUG_LOC_INVALID_ENTRY, DEBUG_LOC_START_END, DEBUG_LOC_START_LENGTH, dwarf2_read_addr_index(), extract_unsigned_integer(), and gdb_read_uleb128().
Referenced by dwarf2_find_location_expression(), and loclist_describe_location().
|
static |
Definition at line 156 of file loc.c.
References DEBUG_LOC_BASE_ADDRESS, DEBUG_LOC_BUFFER_OVERFLOW, DEBUG_LOC_END_OF_LIST, DEBUG_LOC_INVALID_ENTRY, DEBUG_LOC_OFFSET_PAIR, DEBUG_LOC_START_END, DEBUG_LOC_START_LENGTH, dwarf2_read_addr_index(), extract_signed_integer(), extract_unsigned_integer(), and gdb_read_uleb128().
Referenced by dwarf2_find_location_expression(), and loclist_describe_location().
|
static |
Definition at line 3312 of file loc.c.
References all, type::arch(), symbol::arch, disassemble_dwarf_expression(), dwarf2_get_die_type(), dwarf2_read_addr_index(), extract_signed_integer(), extract_unsigned_integer(), gdb_printf(), gdb_putc(), gdbarch_byte_order(), locexpr_regname(), name, safe_read_sleb128(), safe_read_uleb128(), type, and type_print().
Referenced by disassemble_dwarf_expression(), and locexpr_describe_location_1().
|
static |
Definition at line 2375 of file loc.c.
References access_memory(), symbol::arch, ax_const_l(), ax_ext(), ax_goto(), ax_label(), ax_pick(), ax_reg(), ax_simple(), ax_zero_ext(), axs_lvalue_memory, axs_lvalue_register, axs_rvalue, block_for_pc(), dwarf2_compile_expr_to_ax(), dwarf2_fetch_cfa_info(), dwarf2_fetch_die_loc_cu_off(), dwarf_expr_require_composition(), dwarf_reg_to_regnum_or_error(), extract_signed_integer(), extract_unsigned_integer(), func_get_frame_base_dwarf_block(), gdbarch_byte_order(), block::linkage_function(), loc, dwarf2_per_objfile::objfile, dwarf2_locexpr_baton::per_cu, dwarf2_locexpr_baton::per_objfile, regnum, require_rvalue(), safe_read_sleb128(), safe_read_uleb128(), size, objfile::text_section_offset(), and unimplemented().
Referenced by dwarf2_compile_expr_to_ax(), locexpr_tracepoint_var_ref(), and loclist_tracepoint_var_ref().
void dwarf2_compile_property_to_c | ( | string_file * | stream, |
const char * | result_name, | ||
struct gdbarch * | gdbarch, | ||
std::vector< bool > & | registers_used, | ||
const struct dynamic_prop * | prop, | ||
CORE_ADDR | pc, | ||
struct symbol * | sym ) |
Definition at line 1783 of file loc.c.
References dwarf2_per_cu_data::addr_size(), dynamic_prop::baton(), compile_dwarf_bounds_to_c(), dwarf2_locexpr_baton::data, dwarf2_find_location_expression(), dynamic_prop::kind(), dwarf2_property_baton::locexpr, dwarf2_property_baton::loclist, dwarf2_locexpr_baton::per_cu, dwarf2_loclist_baton::per_cu, dwarf2_locexpr_baton::per_objfile, dwarf2_loclist_baton::per_objfile, PROP_LOCEXPR, PROP_LOCLIST, dwarf2_locexpr_baton::size, and size.
Referenced by generate_vla_size().
struct value * dwarf2_evaluate_loc_desc | ( | struct type * | type, |
frame_info_ptr | frame, | ||
const gdb_byte * | data, | ||
size_t | size, | ||
dwarf2_per_cu_data * | per_cu, | ||
dwarf2_per_objfile * | per_objfile, | ||
bool | as_lval ) |
Definition at line 1564 of file loc.c.
References dwarf2_evaluate_loc_desc_full(), and size.
Referenced by dwarf2_compute_name(), dwarf2_evaluate_property(), dwarf_entry_parameter_to_value(), call_site_target::iterate_over_addresses(), locexpr_get_frame_base(), locexpr_read_variable(), loclist_get_frame_base(), and loclist_read_variable().
|
static |
Definition at line 1499 of file loc.c.
References dwarf2_per_cu_data::addr_size(), value::allocate(), value::allocate_optimized_out(), value::copy(), entry_values_debug, dwarf_expr_context::evaluate(), exception_print(), scoped_value_mark::free_to_mark(), gdb_stdout, invalid_synthetic_pointer(), type::length(), value::mark_bytes_unavailable(), size, and type.
Referenced by dwarf2_evaluate_loc_desc(), and indirect_synthetic_pointer().
bool dwarf2_evaluate_property | ( | const struct dynamic_prop * | prop, |
frame_info_ptr | frame, | ||
const struct property_addr_info * | addr_stack, | ||
CORE_ADDR * | value, | ||
gdb::array_view< CORE_ADDR > | push_values ) |
Definition at line 1647 of file loc.c.
References property_addr_info::addr, dwarf2_per_cu_data::addr_size(), dynamic_prop::baton(), check_typedef(), compute_var_value(), dynamic_prop::const_val(), dwarf2_evaluate_loc_desc(), dwarf2_find_location_expression(), dwarf2_locexpr_baton_eval(), get_frame_address_in_block_if_available(), get_selected_frame(), has_stack_frames(), dwarf2_locexpr_baton::is_reference, type::is_unsigned(), dynamic_prop::kind(), type::length(), dwarf2_property_baton::locexpr, dwarf2_property_baton::loclist, property_addr_info::next, dwarf2_offset_baton::offset, dwarf2_property_baton::offset_info, value::optimized_out(), dwarf2_locexpr_baton::per_cu, dwarf2_loclist_baton::per_cu, dwarf2_loclist_baton::per_objfile, PROP_ADDR_OFFSET, PROP_CONST, PROP_LOCEXPR, PROP_LOCLIST, PROP_VARIABLE_NAME, dwarf2_property_baton::property_type, size, property_addr_info::type, dwarf2_offset_baton::type, TYPE_MAIN_TYPE, property_addr_info::valaddr, value_as_address(), value_as_long(), value_at(), value_from_contents(), and dynamic_prop::variable_name().
Referenced by frame_follow_static_link(), gnuv3_baseclass_offset(), resolve_dynamic_array_or_string(), resolve_dynamic_array_or_string_1(), resolve_dynamic_range(), resolve_dynamic_struct(), and resolve_dynamic_type_internal().
const gdb_byte * dwarf2_find_location_expression | ( | const dwarf2_loclist_baton * | baton, |
size_t * | locexpr_length, | ||
const CORE_ADDR | pc ) |
Definition at line 365 of file loc.c.
References dwarf2_per_cu_data::addr_size(), objfile::arch(), dwarf2_loclist_baton::base_address, block_for_pc(), dwarf2_loclist_baton::data, DEBUG_LOC_BASE_ADDRESS, DEBUG_LOC_BUFFER_OVERFLOW, DEBUG_LOC_END_OF_LIST, DEBUG_LOC_INVALID_ENTRY, DEBUG_LOC_OFFSET_PAIR, DEBUG_LOC_START_END, DEBUG_LOC_START_LENGTH, decode_debug_loc_addresses(), decode_debug_loc_dwo_addresses(), decode_debug_loclists_addresses(), block::entry_pc(), extract_unsigned_integer(), dwarf2_loclist_baton::from_dwo, gdbarch_byte_order(), block::linkage_function(), objfile::obfd, dwarf2_per_objfile::objfile, dwarf2_loclist_baton::per_cu, dwarf2_loclist_baton::per_objfile, read_unsigned_leb128(), dwarf2_loclist_baton::size, objfile::text_section_offset(), symbol::value_block(), and dwarf2_per_cu_data::version().
Referenced by dwarf2_compile_property_to_c(), dwarf2_evaluate_property(), dwarf2_fetch_die_loc_sect_off(), loclist_find_frame_base_location(), loclist_generate_c_location(), loclist_read_variable(), loclist_read_variable_at_entry(), and loclist_tracepoint_var_ref().
|
static |
Definition at line 1826 of file loc.c.
References dwarf2_per_cu_data::addr_size(), objfile::arch(), type::code(), dwarf2_locexpr_baton::data, die_type(), dwarf2_fetch_die_loc_cu_off(), dwarf2_fetch_die_loc_sect_off(), dwarf2_fetch_die_type_sect_off(), dwarf2_get_symbol_read_needs(), extract_signed_integer(), extract_unsigned_integer(), gdbarch_byte_order(), get_frame_pc(), dwarf2_per_objfile::objfile, value::offset(), dwarf2_locexpr_baton::per_cu, dwarf2_locexpr_baton::per_objfile, QUIT, dwarf2_per_cu_data::ref_addr_size(), safe_read_uleb128(), safe_skip_leb128(), dwarf2_locexpr_baton::size, SYMBOL_NEEDS_FRAME, SYMBOL_NEEDS_NONE, and SYMBOL_NEEDS_REGISTERS.
Referenced by dwarf2_get_symbol_read_needs(), and locexpr_get_symbol_read_needs().
|
static |
Definition at line 1586 of file loc.c.
References dwarf2_per_cu_data::addr_size(), value::address, dwarf2_locexpr_baton::data, entry_values_debug, dwarf_expr_context::evaluate(), exception_print(), gdb_stdout, value::lval(), lval_memory, not_lval, value::optimized_out(), dwarf2_locexpr_baton::per_cu, dwarf2_locexpr_baton::per_objfile, dwarf_expr_context::push_address(), dwarf2_locexpr_baton::size, and value_as_address().
Referenced by dwarf2_evaluate_property().
|
static |
Definition at line 1264 of file loc.c.
References call_site_parameter::data_value, call_site_parameter::data_value_size, dwarf2_evaluate_loc_desc(), size, call_site_parameter::value, and call_site_parameter::value_size.
Referenced by value_of_dwarf_reg_entry().
struct call_site_parameter * dwarf_expr_reg_to_entry_parameter | ( | frame_info_ptr | frame, |
enum call_site_parameter_kind | kind, | ||
union call_site_parameter_u | kind_u, | ||
dwarf2_per_cu_data ** | per_cu_return, | ||
dwarf2_per_objfile ** | per_objfile_return ) |
Definition at line 1141 of file loc.c.
References call_site::call_site(), call_site_for_pc(), call_site_parameter_matches(), frame_unwind_arch(), func_verify_no_selftailcall(), gdbarch_bfd_arch_info(), get_frame_arch(), get_frame_func(), get_frame_pc(), get_frame_type(), get_prev_frame(), INLINE_FRAME, call_site::iterate_over_addresses(), lookup_minimal_symbol_by_pc(), bound_minimal_symbol::minsym, paddress(), call_site::parameter, call_site::parameter_count, call_site::per_cu, call_site::per_objfile, and general_symbol_info::print_name().
Referenced by dwarf_expr_context::push_dwarf_reg_entry_value(), and value_of_dwarf_reg_entry().
int dwarf_reg_to_regnum | ( | struct gdbarch * | arch, |
int | dwarf_reg ) |
Definition at line 2275 of file loc.c.
References complaint, and gdbarch_dwarf2_reg_to_regnum().
Referenced by dwarf2_frame_cache(), dwarf2_restore_rule(), dwarf_block_to_sp_offset(), dwarf_reg_to_regnum_or_error(), and locexpr_regname().
int dwarf_reg_to_regnum_or_error | ( | struct gdbarch * | arch, |
ULONGEST | dwarf_reg ) |
Definition at line 2304 of file loc.c.
References dwarf_reg_to_regnum(), and throw_bad_regnum_error().
Referenced by do_compile_dwarf_expr_to_c(), dwarf2_compile_expr_to_ax(), dwarf2_fetch_cfa_info(), dwarf2_frame_prev_register(), dwarf_expr_context::execute_stack_op(), dwarf_expr_context::fetch_result(), read_addr_from_reg(), and rw_pieced_value().
Definition at line 1290 of file loc.c.
References check_typedef(), value::computed_closure(), value::incref(), value::type(), and TYPE_IS_REFERENCE.
|
static |
Definition at line 1306 of file loc.c.
References value::computed_closure(), and value::incref().
|
static |
Definition at line 1317 of file loc.c.
References value::computed_closure(), and value::decref().
|
static |
Definition at line 1423 of file loc.c.
References value::allocate_optimized_out(), dwarf2_fetch_constant_bytes(), invalid_synthetic_pointer(), type::length(), type::target_type(), and value_from_contents().
Referenced by indirect_synthetic_pointer().
|
static |
Definition at line 763 of file loc.c.
References type::code(), block::entry_pc(), find_pc_function(), paddress(), type, symbol::type(), TYPE_SPECIFIC_FIELD, TYPE_SPECIFIC_FUNC, and symbol::value_block().
Referenced by call_site_find_chain_2(), and func_verify_no_selftailcall().
void func_get_frame_base_dwarf_block | ( | struct symbol * | framefunc, |
CORE_ADDR | pc, | ||
const gdb_byte ** | start, | ||
size_t * | length ) |
Definition at line 605 of file loc.c.
References symbol_block_ops::find_frame_base_location, general_symbol_info::natural_name(), and SYMBOL_BLOCK_OPS.
Referenced by do_compile_dwarf_expr_to_c(), dwarf2_compile_expr_to_ax(), dwarf_expr_context::get_frame_base(), and locexpr_describe_location_piece().
|
static |
Definition at line 791 of file loc.c.
References call_site::call_site(), func_addr_to_tail_call_list(), call_site::iterate_over_addresses(), lookup_minimal_symbol_by_pc(), bound_minimal_symbol::minsym, paddress(), general_symbol_info::print_name(), call_site::tail_call_next, symbol::type(), and TYPE_TAIL_CALL_LIST.
Referenced by dwarf_expr_reg_to_entry_parameter().
struct value * indirect_synthetic_pointer | ( | sect_offset | die, |
LONGEST | byte_offset, | ||
dwarf2_per_cu_data * | per_cu, | ||
dwarf2_per_objfile * | per_objfile, | ||
frame_info_ptr | frame, | ||
struct type * | type, | ||
bool | resolve_abstract_p ) |
Definition at line 1456 of file loc.c.
References dwarf2_locexpr_baton::data, dwarf2_evaluate_loc_desc_full(), dwarf2_fetch_die_loc_sect_off(), dwarf2_fetch_die_type_sect_off(), fetch_const_value_from_synthetic_pointer(), get_frame_address_in_block(), invalid_synthetic_pointer(), dwarf2_locexpr_baton::per_cu, dwarf2_locexpr_baton::per_objfile, dwarf2_locexpr_baton::size, and type::target_type().
Referenced by coerce_pieced_ref(), indirect_pieced_value(), and sect_variable_value().
void invalid_synthetic_pointer | ( | void | ) |
Definition at line 96 of file loc.c.
Referenced by dwarf2_evaluate_loc_desc_full(), fetch_const_value_from_synthetic_pointer(), dwarf_expr_context::fetch_result(), and indirect_synthetic_pointer().
|
static |
Definition at line 3814 of file loc.c.
References dwarf2_per_cu_data::addr_size(), dwarf2_locexpr_baton::data, locexpr_describe_location_1(), dwarf2_per_cu_data::offset_size(), dwarf2_locexpr_baton::per_cu, dwarf2_locexpr_baton::per_objfile, dwarf2_locexpr_baton::size, and SYMBOL_LOCATION_BATON.
|
static |
Definition at line 3718 of file loc.c.
References objfile::arch(), bits, disassemble_dwarf_expression(), dwarf_always_disassemble, gdb_printf(), locexpr_describe_location_piece(), dwarf2_per_objfile::objfile, general_symbol_info::print_name(), safe_read_uleb128(), and size.
Referenced by locexpr_describe_location(), and loclist_describe_location().
|
static |
Definition at line 3139 of file loc.c.
References objfile::arch(), block_for_pc(), dwarf2_read_addr_index(), extract_unsigned_integer(), func_get_frame_base_dwarf_block(), gdb_printf(), gdbarch_byte_order(), leb128_size(), block::linkage_function(), locexpr_regname(), dwarf2_per_objfile::objfile, objfile_name(), dwarf2_locexpr_baton::per_objfile, piece_end_p(), general_symbol_info::print_name(), safe_read_sleb128(), and safe_read_uleb128().
Referenced by locexpr_describe_location_1().
|
static |
Definition at line 491 of file loc.c.
References dwarf2_locexpr_baton::data, dwarf2_locexpr_baton::size, and SYMBOL_LOCATION_BATON.
|
static |
Definition at line 3850 of file loc.c.
References dwarf2_per_cu_data::addr_size(), compile_dwarf_expr_to_c(), dwarf2_locexpr_baton::data, general_symbol_info::natural_name(), dwarf2_locexpr_baton::per_cu, dwarf2_locexpr_baton::per_objfile, dwarf2_locexpr_baton::size, and SYMBOL_LOCATION_BATON.
|
static |
Definition at line 505 of file loc.c.
References value::address, builtin_type::builtin_data_ptr, builtin_type(), dwarf2_evaluate_loc_desc(), get_frame_arch(), get_frame_pc(), dwarf2_locexpr_baton::per_cu, dwarf2_locexpr_baton::per_objfile, SYMBOL_BLOCK_OPS, SYMBOL_LOCATION_BATON, and type.
|
static |
Definition at line 3085 of file loc.c.
References dwarf2_per_cu_data::addr_size(), objfile::arch(), dwarf2_locexpr_baton::data, dwarf2_get_symbol_read_needs(), gdbarch_byte_order(), dwarf2_per_objfile::objfile, dwarf2_locexpr_baton::per_cu, dwarf2_locexpr_baton::per_objfile, dwarf2_per_cu_data::ref_addr_size(), dwarf2_locexpr_baton::size, and SYMBOL_LOCATION_BATON.
|
static |
Definition at line 3054 of file loc.c.
References dwarf2_locexpr_baton::data, dwarf2_evaluate_loc_desc(), dwarf2_locexpr_baton::per_cu, dwarf2_locexpr_baton::per_objfile, dwarf2_locexpr_baton::size, SYMBOL_LOCATION_BATON, and symbol::type().
|
static |
Definition at line 3072 of file loc.c.
References dwarf2_locexpr_baton::data, dwarf2_locexpr_baton::size, SYMBOL_LOCATION_BATON, symbol::type(), and value_of_dwarf_block_entry().
|
static |
Definition at line 3114 of file loc.c.
References dwarf_reg_to_regnum(), gdbarch_register_name(), and regnum.
Referenced by disassemble_dwarf_expression(), and locexpr_describe_location_piece().
|
static |
Definition at line 3832 of file loc.c.
References dwarf2_per_cu_data::addr_size(), dwarf2_locexpr_baton::data, dwarf2_compile_expr_to_ax(), value::optimized_out(), dwarf2_locexpr_baton::per_cu, dwarf2_locexpr_baton::per_objfile, dwarf2_locexpr_baton::size, and SYMBOL_LOCATION_BATON.
|
static |
Definition at line 3950 of file loc.c.
References dwarf2_per_cu_data::addr_size(), objfile::arch(), dwarf2_loclist_baton::base_address, dwarf2_loclist_baton::data, DEBUG_LOC_BASE_ADDRESS, DEBUG_LOC_BUFFER_OVERFLOW, DEBUG_LOC_END_OF_LIST, DEBUG_LOC_INVALID_ENTRY, DEBUG_LOC_OFFSET_PAIR, DEBUG_LOC_START_END, DEBUG_LOC_START_LENGTH, decode_debug_loc_addresses(), decode_debug_loc_dwo_addresses(), decode_debug_loclists_addresses(), extract_unsigned_integer(), dwarf2_loclist_baton::from_dwo, gdb_printf(), gdbarch_byte_order(), locexpr_describe_location_1(), objfile::obfd, dwarf2_per_objfile::objfile, dwarf2_per_cu_data::offset_size(), paddress(), dwarf2_loclist_baton::per_cu, dwarf2_loclist_baton::per_objfile, general_symbol_info::print_name(), read_unsigned_leb128(), dwarf2_per_objfile::relocate(), dwarf2_loclist_baton::size, SYMBOL_LOCATION_BATON, and dwarf2_per_cu_data::version().
|
static |
Definition at line 549 of file loc.c.
References dwarf2_find_location_expression(), and SYMBOL_LOCATION_BATON.
|
static |
Definition at line 4086 of file loc.c.
References dwarf2_per_cu_data::addr_size(), compile_dwarf_expr_to_c(), dwarf2_loclist_baton::data, dwarf2_find_location_expression(), general_symbol_info::natural_name(), dwarf2_loclist_baton::per_cu, dwarf2_loclist_baton::per_objfile, size, and SYMBOL_LOCATION_BATON.
|
static |
Definition at line 562 of file loc.c.
References value::address, builtin_type::builtin_data_ptr, builtin_type(), dwarf2_evaluate_loc_desc(), get_frame_arch(), get_frame_pc(), dwarf2_loclist_baton::per_cu, dwarf2_loclist_baton::per_objfile, SYMBOL_BLOCK_OPS, SYMBOL_LOCATION_BATON, and type.
|
static |
Definition at line 3887 of file loc.c.
References dwarf2_evaluate_loc_desc(), dwarf2_find_location_expression(), get_frame_address_in_block(), dwarf2_loclist_baton::per_cu, dwarf2_loclist_baton::per_objfile, size, SYMBOL_LOCATION_BATON, and symbol::type().
|
static |
Definition at line 3912 of file loc.c.
References value::allocate_optimized_out(), dwarf2_loclist_baton::data, dwarf2_find_location_expression(), get_frame_func_if_available(), size, SYMBOL_LOCATION_BATON, symbol::type(), and value_of_dwarf_block_entry().
|
static |
Definition at line 3934 of file loc.c.
References SYMBOL_NEEDS_FRAME.
|
static |
Definition at line 4066 of file loc.c.
References dwarf2_per_cu_data::addr_size(), dwarf2_loclist_baton::data, dwarf2_compile_expr_to_ax(), dwarf2_find_location_expression(), value::optimized_out(), dwarf2_loclist_baton::per_cu, dwarf2_loclist_baton::per_objfile, agent_expr::scope, size, and SYMBOL_LOCATION_BATON.
|
static |
Definition at line 3105 of file loc.c.
References dwarf2_locexpr_baton::data.
Referenced by locexpr_describe_location_piece().
|
static |
Definition at line 3705 of file loc.c.
References gdb_printf().
|
static |
Definition at line 641 of file loc.c.
References gdb_printf().
Definition at line 846 of file loc.c.
References gdb_printf(), gdb_stdlog, lookup_minimal_symbol_by_pc(), bound_minimal_symbol::minsym, paddress(), call_site::pc(), and general_symbol_info::print_name().
Referenced by chain_candidate().
|
static |
Definition at line 2290 of file loc.c.
Referenced by dwarf_reg_to_regnum_or_error().
|
static |
|
static |
Definition at line 1398 of file loc.c.
References CALL_SITE_PARAMETER_DWARF_REG, CALL_SITE_PARAMETER_FB_OFFSET, dwarf_block_to_dwarf_reg(), dwarf_block_to_fb_offset(), call_site_parameter_u::dwarf_reg, call_site_parameter_u::fb_offset, and value_of_dwarf_reg_entry().
Referenced by locexpr_read_variable_at_entry(), and loclist_read_variable_at_entry().
struct value * value_of_dwarf_reg_entry | ( | struct type * | type, |
frame_info_ptr | frame, | ||
enum call_site_parameter_kind | kind, | ||
union call_site_parameter_u | kind_u ) |
Definition at line 1342 of file loc.c.
References value::allocate_computed(), check_typedef(), value::contents_raw(), dwarf_entry_parameter_to_value(), dwarf_expr_reg_to_entry_parameter(), entry_data_value_funcs, get_prev_frame(), call_site_parameter::kind, type::length(), release_value(), value::set_lazy(), type::target_type(), and TYPE_IS_REFERENCE.
Referenced by ppc_sysv_get_return_buf_addr(), and value_of_dwarf_block_entry().
const struct symbol_block_ops dwarf2_block_frame_base_locexpr_funcs |
const struct symbol_block_ops dwarf2_block_frame_base_loclist_funcs |
const struct symbol_computed_ops dwarf2_locexpr_funcs |
const struct symbol_computed_ops dwarf2_loclist_funcs |
|
static |
Definition at line 3702 of file loc.c.
Referenced by locexpr_describe_location_1().
|
static |
Definition at line 1328 of file loc.c.
Referenced by value_of_dwarf_reg_entry().
unsigned int entry_values_debug = 0 |
Definition at line 636 of file loc.c.
Referenced by call_site_find_chain(), chain_candidate(), dwarf2_evaluate_loc_desc_full(), dwarf2_locexpr_baton_eval(), and dwarf2_tailcall_sniffer_first().