GDB (xrefs)
Classes | Enumerations | Functions | Variables
/tmp/gdb-8.1/gdb/dwarf2loc.c File Reference
#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 "dwarf2expr.h"
#include "dwarf2loc.h"
#include "dwarf2-frame.h"
#include "compile/compile.h"
#include "selftest.h"
#include <algorithm>
#include <vector>
#include <unordered_set>
#include "common/underlying.h"
#include "common/byte-vector.h"

Go to the source code of this file.

Classes

struct  dwarf_expr_baton
 
class  dwarf_evaluate_loc_desc
 
struct  piece_closure
 
class  symbol_needs_eval_context
 

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_BUFFER_OVERFLOW = -1, DEBUG_LOC_INVALID_ENTRY = -2
}
 

Functions

static struct valuedwarf2_evaluate_loc_desc_full (struct type *type, struct frame_info *frame, const gdb_byte *data, size_t size, struct dwarf2_per_cu_data *per_cu, struct type *subobj_type, LONGEST subobj_byte_offset)
 
static struct call_site_parameterdwarf_expr_reg_to_entry_parameter (struct frame_info *frame, enum call_site_parameter_kind kind, union call_site_parameter_u kind_u, struct dwarf2_per_cu_data **per_cu_return)
 
static 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, CORE_ADDR *low, CORE_ADDR *high, enum bfd_endian byte_order, unsigned int addr_size, int signed_addr_p)
 
static enum debug_loc_kind decode_debug_loclists_addresses (struct dwarf2_per_cu_data *per_cu, const gdb_byte *loc_ptr, const gdb_byte *buf_end, const gdb_byte **new_ptr, CORE_ADDR *low, CORE_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 (struct dwarf2_per_cu_data *per_cu, const gdb_byte *loc_ptr, const gdb_byte *buf_end, const gdb_byte **new_ptr, CORE_ADDR *low, CORE_ADDR *high, enum bfd_endian byte_order)
 
const gdb_bytedwarf2_find_location_expression (struct dwarf2_loclist_baton *baton, size_t *locexpr_length, 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, struct frame_info *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, struct frame_info *frame)
 
void func_get_frame_base_dwarf_block (struct symbol *framefunc, CORE_ADDR pc, const gdb_byte **start, size_t *length)
 
static CORE_ADDR get_frame_pc_for_per_cu_dwarf_call (void *baton)
 
static void per_cu_dwarf_call (struct dwarf_expr_context *ctx, cu_offset die_offset, struct dwarf2_per_cu_data *per_cu)
 
static void show_entry_values_debug (struct ui_file *file, int from_tty, struct cmd_list_element *c, const char *value)
 
static CORE_ADDR call_site_to_target_addr (struct gdbarch *call_site_gdbarch, struct call_site *call_site, struct frame_info *caller_frame)
 
static struct symbolfunc_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, std::vector< struct call_site *> *chain)
 
static struct call_site_chaincall_site_find_chain_1 (struct gdbarch *gdbarch, CORE_ADDR caller_pc, CORE_ADDR callee_pc)
 
struct call_site_chaincall_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)
 
static struct valuedwarf_entry_parameter_to_value (struct call_site_parameter *parameter, CORE_ADDR deref_size, struct type *type, struct frame_info *caller_frame, struct dwarf2_per_cu_data *per_cu)
 
static struct valueentry_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)
 
static struct valuevalue_of_dwarf_reg_entry (struct type *type, struct frame_info *frame, enum call_site_parameter_kind kind, union call_site_parameter_u kind_u)
 
static struct valuevalue_of_dwarf_block_entry (struct type *type, struct frame_info *frame, const gdb_byte *block, size_t block_len)
 
static struct piece_closureallocate_piece_closure (struct dwarf2_per_cu_data *per_cu, std::vector< dwarf_expr_piece > &&pieces, struct frame_info *frame)
 
static void copy_bitwise (gdb_byte *dest, ULONGEST dest_offset, const gdb_byte *source, ULONGEST source_offset, ULONGEST nbits, int bits_big_endian)
 
static size_t bits_to_bytes (ULONGEST start, ULONGEST n_bits)
 
static void rw_pieced_value (struct value *v, struct value *from)
 
static void read_pieced_value (struct value *v)
 
static void write_pieced_value (struct value *to, struct value *from)
 
static int check_pieced_synthetic_pointer (const struct value *value, LONGEST bit_offset, int bit_length)
 
static CORE_ADDR get_frame_address_in_block_wrapper (void *baton)
 
static struct valuefetch_const_value_from_synthetic_pointer (sect_offset die, LONGEST byte_offset, struct dwarf2_per_cu_data *per_cu, struct type *type)
 
static struct valueindirect_synthetic_pointer (sect_offset die, LONGEST byte_offset, struct dwarf2_per_cu_data *per_cu, struct frame_info *frame, struct type *type)
 
static struct valueindirect_pieced_value (struct value *value)
 
static struct valuecoerce_pieced_ref (const struct value *value)
 
static void * copy_pieced_value_closure (const struct value *v)
 
static void free_pieced_value_closure (struct value *v)
 
struct valuedwarf2_evaluate_loc_desc (struct type *type, struct frame_info *frame, const gdb_byte *data, size_t size, struct dwarf2_per_cu_data *per_cu)
 
static int dwarf2_locexpr_baton_eval (const struct dwarf2_locexpr_baton *dlbaton, struct frame_info *frame, CORE_ADDR addr, CORE_ADDR *valp)
 
int dwarf2_evaluate_property (const struct dynamic_prop *prop, struct frame_info *frame, struct property_addr_info *addr_stack, CORE_ADDR *value)
 
void dwarf2_compile_property_to_c (string_file &stream, const char *result_name, struct gdbarch *gdbarch, unsigned char *registers_used, const struct dynamic_prop *prop, CORE_ADDR pc, struct symbol *sym)
 
static enum symbol_needs_kind dwarf2_loc_desc_get_symbol_read_needs (const gdb_byte *data, size_t size, struct dwarf2_per_cu_data *per_cu)
 
static void 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 CORE_ADDR get_ax_pc (void *baton)
 
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, struct dwarf2_per_cu_data *per_cu)
 
static struct valuelocexpr_read_variable (struct symbol *symbol, struct frame_info *frame)
 
static struct valuelocexpr_read_variable_at_entry (struct symbol *symbol, struct frame_info *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_bytelocexpr_describe_location_piece (struct symbol *symbol, struct ui_file *stream, CORE_ADDR addr, struct objfile *objfile, struct dwarf2_per_cu_data *per_cu, const gdb_byte *data, const gdb_byte *end, unsigned int addr_size)
 
static const gdb_bytedisassemble_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, struct dwarf2_per_cu_data *per_cu)
 
static void locexpr_describe_location_1 (struct symbol *symbol, CORE_ADDR addr, struct ui_file *stream, const gdb_byte *data, size_t size, struct objfile *objfile, unsigned int addr_size, int offset_size, struct dwarf2_per_cu_data *per_cu)
 
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, unsigned char *registers_used, CORE_ADDR pc, const char *result_name)
 
static struct valueloclist_read_variable (struct symbol *symbol, struct frame_info *frame)
 
static struct valueloclist_read_variable_at_entry (struct symbol *symbol, struct frame_info *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, unsigned char *registers_used, CORE_ADDR pc, const char *result_name)
 
void _initialize_dwarf2loc (void)
 

Variables

int dwarf_always_disassemble
 
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 const struct lval_funcs pieced_value_funcs
 
const struct symbol_computed_ops dwarf2_locexpr_funcs
 
const struct symbol_computed_ops dwarf2_loclist_funcs
 

Enumeration Type Documentation

◆ debug_loc_kind

Enumerator
DEBUG_LOC_END_OF_LIST 
DEBUG_LOC_BASE_ADDRESS 
DEBUG_LOC_START_END 
DEBUG_LOC_START_LENGTH 
DEBUG_LOC_BUFFER_OVERFLOW 
DEBUG_LOC_INVALID_ENTRY 

Definition at line 69 of file dwarf2loc.c.

Function Documentation

◆ _initialize_dwarf2loc()

void _initialize_dwarf2loc ( void  )

◆ access_memory()

static void access_memory ( struct gdbarch arch,
struct agent_expr expr,
ULONGEST  nbits 
)
static

◆ allocate_piece_closure()

static struct piece_closure* allocate_piece_closure ( struct dwarf2_per_cu_data per_cu,
std::vector< dwarf_expr_piece > &&  pieces,
struct frame_info frame 
)
static

◆ bits_to_bytes()

static size_t bits_to_bytes ( ULONGEST  start,
ULONGEST  n_bits 
)
static

Definition at line 1754 of file dwarf2loc.c.

Referenced by rw_pieced_value().

◆ call_site_find_chain()

struct call_site_chain* call_site_find_chain ( struct gdbarch gdbarch,
CORE_ADDR  caller_pc,
CORE_ADDR  callee_pc 
)

◆ call_site_find_chain_1()

static struct call_site_chain* call_site_find_chain_1 ( struct gdbarch gdbarch,
CORE_ADDR  caller_pc,
CORE_ADDR  callee_pc 
)
static

◆ call_site_parameter_matches()

static int call_site_parameter_matches ( struct call_site_parameter parameter,
enum call_site_parameter_kind  kind,
union call_site_parameter_u  kind_u 
)
static

◆ call_site_to_target_addr()

static CORE_ADDR call_site_to_target_addr ( struct gdbarch call_site_gdbarch,
struct call_site call_site,
struct frame_info caller_frame 
)
static

◆ chain_candidate()

static void chain_candidate ( struct gdbarch gdbarch,
gdb::unique_xmalloc_ptr< struct call_site_chain > *  resultp,
std::vector< struct call_site *> *  chain 
)
static

◆ check_pieced_synthetic_pointer()

static int check_pieced_synthetic_pointer ( const struct value value,
LONGEST  bit_offset,
int  bit_length 
)
static

◆ coerce_pieced_ref()

static struct value* coerce_pieced_ref ( const struct value value)
static

◆ copy_bitwise()

static void copy_bitwise ( gdb_byte dest,
ULONGEST  dest_offset,
const gdb_byte source,
ULONGEST  source_offset,
ULONGEST  nbits,
int  bits_big_endian 
)
static

Definition at line 1525 of file dwarf2loc.c.

Referenced by rw_pieced_value().

◆ copy_pieced_value_closure()

static void* copy_pieced_value_closure ( const struct value v)
static

Definition at line 2282 of file dwarf2loc.c.

References piece_closure::refc, and value_computed_closure().

◆ decode_debug_loc_addresses()

static enum debug_loc_kind decode_debug_loc_addresses ( const gdb_byte loc_ptr,
const gdb_byte buf_end,
const gdb_byte **  new_ptr,
CORE_ADDR low,
CORE_ADDR high,
enum bfd_endian  byte_order,
unsigned int  addr_size,
int  signed_addr_p 
)
static

◆ decode_debug_loc_dwo_addresses()

static enum debug_loc_kind decode_debug_loc_dwo_addresses ( struct dwarf2_per_cu_data per_cu,
const gdb_byte loc_ptr,
const gdb_byte buf_end,
const gdb_byte **  new_ptr,
CORE_ADDR low,
CORE_ADDR high,
enum bfd_endian  byte_order 
)
static

◆ decode_debug_loclists_addresses()

static enum debug_loc_kind decode_debug_loclists_addresses ( struct dwarf2_per_cu_data per_cu,
const gdb_byte loc_ptr,
const gdb_byte buf_end,
const gdb_byte **  new_ptr,
CORE_ADDR low,
CORE_ADDR high,
enum bfd_endian  byte_order,
unsigned int  addr_size,
int  signed_addr_p 
)
static

◆ disassemble_dwarf_expression()

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,
struct dwarf2_per_cu_data per_cu 
)
static

◆ dwarf2_compile_expr_to_ax()

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,
struct dwarf2_per_cu_data per_cu 
)

◆ dwarf2_compile_property_to_c()

void dwarf2_compile_property_to_c ( string_file stream,
const char *  result_name,
struct gdbarch gdbarch,
unsigned char *  registers_used,
const struct dynamic_prop prop,
CORE_ADDR  pc,
struct symbol sym 
)

◆ dwarf2_evaluate_loc_desc()

struct value* dwarf2_evaluate_loc_desc ( struct type type,
struct frame_info frame,
const gdb_byte data,
size_t  size,
struct dwarf2_per_cu_data per_cu 
)

◆ dwarf2_evaluate_loc_desc_full()

static struct value * dwarf2_evaluate_loc_desc_full ( struct type type,
struct frame_info frame,
const gdb_byte data,
size_t  size,
struct dwarf2_per_cu_data per_cu,
struct type subobj_type,
LONGEST  subobj_byte_offset 
)
static

Definition at line 2326 of file dwarf2loc.c.

References _, dwarf_expr_context::addr_size, allocate_computed_value(), allocate_optimized_out_value(), allocate_piece_closure(), allocate_value(), builtin_type::builtin_data_ptr, builtin_type::builtin_func_ptr, builtin_type(), CATCH, dwarf_expr_context::data, dwarf2_per_cu_addr_size(), dwarf2_per_cu_objfile(), dwarf2_per_cu_ref_addr_size(), dwarf2_per_cu_text_offset(), dwarf_reg_to_regnum_or_error(), DWARF_VALUE_IMPLICIT_POINTER, DWARF_VALUE_LITERAL, DWARF_VALUE_MEMORY, DWARF_VALUE_OPTIMIZED_OUT, DWARF_VALUE_REGISTER, DWARF_VALUE_STACK, END_CATCH, entry_values_debug, error(), dwarf_expr_context::eval(), exception_print(), dwarf_expr_context::fetch(), dwarf_expr_context::fetch_address(), dwarf_expr_context::fetch_in_stack_memory(), dwarf_evaluate_loc_desc::frame, scoped_value_mark::free_to_mark(), gdb_stdout, dwarf_expr_context::gdbarch, gdbarch_byte_order(), get_frame_arch(), get_objfile_arch(), dwarf_expr_context::initialized, internal_error(), invalid_synthetic_pointer(), dwarf_expr_context::len, dwarf_expr_context::location, longest_to_int(), mark_value_bytes_unavailable(), NO_ENTRY_VALUE_ERROR, NOT_AVAILABLE_ERROR, dwarf_evaluate_loc_desc::obj_address, dwarf_expr_context::offset, dwarf_evaluate_loc_desc::per_cu, piece_closure::per_cu, pieced_value_funcs, dwarf_expr_context::pieces, dwarf_expr_context::ref_addr_size, RETURN_MASK_ERROR, set_value_initialized(), set_value_offset(), set_value_stack(), dwarf_expr_piece::size, size, throw_exception(), TRY, type, TYPE_CODE, TYPE_CODE_FUNC, TYPE_CODE_METHOD, TYPE_LENGTH, value_as_address(), value_as_long(), value_at_lazy(), value_contents_all(), value_contents_copy(), value_contents_raw(), value_from_pointer(), value_from_register(), value_incref(), value_optimized_out(), and value_type().

Referenced by dwarf2_evaluate_loc_desc(), and indirect_synthetic_pointer().

◆ dwarf2_evaluate_property()

int dwarf2_evaluate_property ( const struct dynamic_prop prop,
struct frame_info frame,
struct property_addr_info addr_stack,
CORE_ADDR value 
)

◆ dwarf2_find_location_expression()

const gdb_byte* dwarf2_find_location_expression ( struct dwarf2_loclist_baton baton,
size_t *  locexpr_length,
CORE_ADDR  pc 
)

◆ dwarf2_loc_desc_get_symbol_read_needs()

static enum symbol_needs_kind dwarf2_loc_desc_get_symbol_read_needs ( const gdb_byte data,
size_t  size,
struct dwarf2_per_cu_data per_cu 
)
static

◆ dwarf2_locexpr_baton_eval()

static int dwarf2_locexpr_baton_eval ( const struct dwarf2_locexpr_baton dlbaton,
struct frame_info frame,
CORE_ADDR  addr,
CORE_ADDR valp 
)
static

◆ dwarf_entry_parameter_to_value()

static struct value* dwarf_entry_parameter_to_value ( struct call_site_parameter parameter,
CORE_ADDR  deref_size,
struct type type,
struct frame_info caller_frame,
struct dwarf2_per_cu_data per_cu 
)
static

◆ dwarf_expr_reg_to_entry_parameter()

static struct call_site_parameter * dwarf_expr_reg_to_entry_parameter ( struct frame_info frame,
enum call_site_parameter_kind  kind,
union call_site_parameter_u  kind_u,
struct dwarf2_per_cu_data **  per_cu_return 
)
static

◆ dwarf_reg_to_regnum()

int dwarf_reg_to_regnum ( struct gdbarch arch,
int  dwarf_reg 
)

◆ dwarf_reg_to_regnum_or_error()

int dwarf_reg_to_regnum_or_error ( struct gdbarch arch,
ULONGEST  dwarf_reg 
)

◆ entry_data_value_coerce_ref()

static struct value* entry_data_value_coerce_ref ( const struct value value)
static

◆ entry_data_value_copy_closure()

static void* entry_data_value_copy_closure ( const struct value v)
static

Definition at line 1364 of file dwarf2loc.c.

References value_computed_closure(), and value_incref().

◆ entry_data_value_free_closure()

static void entry_data_value_free_closure ( struct value v)
static

Definition at line 1375 of file dwarf2loc.c.

References value_computed_closure(), and value_free().

◆ fetch_const_value_from_synthetic_pointer()

static struct value* fetch_const_value_from_synthetic_pointer ( sect_offset  die,
LONGEST  byte_offset,
struct dwarf2_per_cu_data per_cu,
struct type type 
)
static

◆ free_pieced_value_closure()

static void free_pieced_value_closure ( struct value v)
static

◆ func_addr_to_tail_call_list()

static struct symbol* func_addr_to_tail_call_list ( struct gdbarch gdbarch,
CORE_ADDR  addr 
)
static

◆ func_get_frame_base_dwarf_block()

void func_get_frame_base_dwarf_block ( struct symbol framefunc,
CORE_ADDR  pc,
const gdb_byte **  start,
size_t *  length 
)

◆ func_verify_no_selftailcall()

static void func_verify_no_selftailcall ( struct gdbarch gdbarch,
CORE_ADDR  verify_addr 
)
static

◆ get_ax_pc()

static CORE_ADDR get_ax_pc ( void *  baton)
static

Definition at line 2980 of file dwarf2loc.c.

References agent_expr::scope.

Referenced by dwarf2_compile_expr_to_ax().

◆ get_frame_address_in_block_wrapper()

static CORE_ADDR get_frame_address_in_block_wrapper ( void *  baton)
static

Definition at line 2105 of file dwarf2loc.c.

References get_frame_address_in_block().

Referenced by indirect_synthetic_pointer().

◆ get_frame_pc_for_per_cu_dwarf_call()

static CORE_ADDR get_frame_pc_for_per_cu_dwarf_call ( void *  baton)
static

Definition at line 526 of file dwarf2loc.c.

References dwarf_expr_context::get_frame_pc().

Referenced by per_cu_dwarf_call().

◆ indirect_pieced_value()

static struct value* indirect_pieced_value ( struct value value)
static

◆ indirect_synthetic_pointer()

static struct value* indirect_synthetic_pointer ( sect_offset  die,
LONGEST  byte_offset,
struct dwarf2_per_cu_data per_cu,
struct frame_info frame,
struct type type 
)
static

◆ invalid_synthetic_pointer()

static void invalid_synthetic_pointer ( void  )
static

◆ locexpr_describe_location()

static void locexpr_describe_location ( struct symbol symbol,
CORE_ADDR  addr,
struct ui_file stream 
)
static

◆ locexpr_describe_location_1()

static void locexpr_describe_location_1 ( struct symbol symbol,
CORE_ADDR  addr,
struct ui_file stream,
const gdb_byte data,
size_t  size,
struct objfile objfile,
unsigned int  addr_size,
int  offset_size,
struct dwarf2_per_cu_data per_cu 
)
static

◆ locexpr_describe_location_piece()

static const gdb_byte* locexpr_describe_location_piece ( struct symbol symbol,
struct ui_file stream,
CORE_ADDR  addr,
struct objfile objfile,
struct dwarf2_per_cu_data per_cu,
const gdb_byte data,
const gdb_byte end,
unsigned int  addr_size 
)
static

◆ locexpr_find_frame_base_location()

static void locexpr_find_frame_base_location ( struct symbol framefunc,
CORE_ADDR  pc,
const gdb_byte **  start,
size_t *  length 
)
static

◆ locexpr_generate_c_location()

static void locexpr_generate_c_location ( struct symbol sym,
string_file stream,
struct gdbarch gdbarch,
unsigned char *  registers_used,
CORE_ADDR  pc,
const char *  result_name 
)
static

◆ locexpr_get_frame_base()

static CORE_ADDR locexpr_get_frame_base ( struct symbol framefunc,
struct frame_info frame 
)
static

◆ locexpr_get_symbol_read_needs()

static enum symbol_needs_kind locexpr_get_symbol_read_needs ( struct symbol symbol)
static

◆ locexpr_read_variable()

static struct value* locexpr_read_variable ( struct symbol symbol,
struct frame_info frame 
)
static

◆ locexpr_read_variable_at_entry()

static struct value* locexpr_read_variable_at_entry ( struct symbol symbol,
struct frame_info frame 
)
static

◆ locexpr_regname()

static const char* locexpr_regname ( struct gdbarch gdbarch,
int  dwarf_regnum 
)
static

◆ locexpr_tracepoint_var_ref()

static void locexpr_tracepoint_var_ref ( struct symbol symbol,
struct agent_expr ax,
struct axs_value value 
)
static

◆ loclist_describe_location()

static void loclist_describe_location ( struct symbol symbol,
CORE_ADDR  addr,
struct ui_file stream 
)
static

◆ loclist_find_frame_base_location()

static void loclist_find_frame_base_location ( struct symbol framefunc,
CORE_ADDR  pc,
const gdb_byte **  start,
size_t *  length 
)
static

Definition at line 452 of file dwarf2loc.c.

References dwarf2_find_location_expression(), and SYMBOL_LOCATION_BATON.

◆ loclist_generate_c_location()

static void loclist_generate_c_location ( struct symbol sym,
string_file stream,
struct gdbarch gdbarch,
unsigned char *  registers_used,
CORE_ADDR  pc,
const char *  result_name 
)
static

◆ loclist_get_frame_base()

static CORE_ADDR loclist_get_frame_base ( struct symbol framefunc,
struct frame_info frame 
)
static

◆ loclist_read_variable()

static struct value* loclist_read_variable ( struct symbol symbol,
struct frame_info frame 
)
static

◆ loclist_read_variable_at_entry()

static struct value* loclist_read_variable_at_entry ( struct symbol symbol,
struct frame_info frame 
)
static

◆ loclist_symbol_needs()

static enum symbol_needs_kind loclist_symbol_needs ( struct symbol symbol)
static

Definition at line 4492 of file dwarf2loc.c.

References SYMBOL_NEEDS_FRAME.

◆ loclist_tracepoint_var_ref()

static void loclist_tracepoint_var_ref ( struct symbol symbol,
struct agent_expr ax,
struct axs_value value 
)
static

◆ per_cu_dwarf_call()

static void per_cu_dwarf_call ( struct dwarf_expr_context ctx,
cu_offset  die_offset,
struct dwarf2_per_cu_data per_cu 
)
static

◆ piece_end_p()

static int piece_end_p ( const gdb_byte data,
const gdb_byte end 
)
static

Definition at line 3703 of file dwarf2loc.c.

References dwarf2_locexpr_baton::data.

Referenced by locexpr_describe_location_piece().

◆ read_pieced_value()

static void read_pieced_value ( struct value v)
static

Definition at line 2050 of file dwarf2loc.c.

References rw_pieced_value().

◆ rw_pieced_value()

static void rw_pieced_value ( struct value v,
struct value from 
)
static

◆ show_entry_values_debug()

static void show_entry_values_debug ( struct ui_file file,
int  from_tty,
struct cmd_list_element c,
const char *  value 
)
static

Definition at line 730 of file dwarf2loc.c.

References _, and fprintf_filtered().

Referenced by _initialize_dwarf2loc().

◆ tailcall_dump()

static void tailcall_dump ( struct gdbarch gdbarch,
const struct call_site call_site 
)
static

◆ throw_bad_regnum_error()

static void throw_bad_regnum_error ( ULONGEST  dwarf_reg)
static

Definition at line 2906 of file dwarf2loc.c.

References _, error(), and pulongest().

Referenced by dwarf_reg_to_regnum_or_error().

◆ unimplemented()

static void unimplemented ( unsigned int  op)
static

Definition at line 2870 of file dwarf2loc.c.

References _, error(), and name.

Referenced by dwarf2_compile_expr_to_ax().

◆ value_of_dwarf_block_entry()

static struct value* value_of_dwarf_block_entry ( struct type type,
struct frame_info frame,
const gdb_byte block,
size_t  block_len 
)
static

◆ value_of_dwarf_reg_entry()

static struct value* value_of_dwarf_reg_entry ( struct type type,
struct frame_info frame,
enum call_site_parameter_kind  kind,
union call_site_parameter_u  kind_u 
)
static

◆ write_pieced_value()

static void write_pieced_value ( struct value to,
struct value from 
)
static

Definition at line 2056 of file dwarf2loc.c.

References rw_pieced_value().

Variable Documentation

◆ dwarf2_block_frame_base_locexpr_funcs

const struct symbol_block_ops dwarf2_block_frame_base_locexpr_funcs
Initial value:
=
{
}
static CORE_ADDR locexpr_get_frame_base(struct symbol *framefunc, struct frame_info *frame)
Definition: dwarf2loc.c:408
static void locexpr_find_frame_base_location(struct symbol *framefunc, CORE_ADDR pc, const gdb_byte **start, size_t *length)
Definition: dwarf2loc.c:394

Definition at line 442 of file dwarf2loc.c.

Referenced by _initialize_dwarf2_read().

◆ dwarf2_block_frame_base_loclist_funcs

const struct symbol_block_ops dwarf2_block_frame_base_loclist_funcs
Initial value:
=
{
}
static void loclist_find_frame_base_location(struct symbol *framefunc, CORE_ADDR pc, const gdb_byte **start, size_t *length)
Definition: dwarf2loc.c:452
static CORE_ADDR loclist_get_frame_base(struct symbol *framefunc, struct frame_info *frame)
Definition: dwarf2loc.c:465

Definition at line 499 of file dwarf2loc.c.

Referenced by _initialize_dwarf2_read().

◆ dwarf2_locexpr_funcs

const struct symbol_computed_ops dwarf2_locexpr_funcs
Initial value:
= {
0,
}
static struct value * locexpr_read_variable_at_entry(struct symbol *symbol, struct frame_info *frame)
Definition: dwarf2loc.c:3677
static struct value * locexpr_read_variable(struct symbol *symbol, struct frame_info *frame)
Definition: dwarf2loc.c:3660
static void locexpr_generate_c_location(struct symbol *sym, string_file &stream, struct gdbarch *gdbarch, unsigned char *registers_used, CORE_ADDR pc, const char *result_name)
Definition: dwarf2loc.c:4408
static void locexpr_describe_location(struct symbol *symbol, CORE_ADDR addr, struct ui_file *stream)
Definition: dwarf2loc.c:4372
static enum symbol_needs_kind locexpr_get_symbol_read_needs(struct symbol *symbol)
Definition: dwarf2loc.c:3690
static void locexpr_tracepoint_var_ref(struct symbol *symbol, struct agent_expr *ax, struct axs_value *value)
Definition: dwarf2loc.c:4391

Definition at line 4428 of file dwarf2loc.c.

Referenced by _initialize_dwarf2_read().

◆ dwarf2_loclist_funcs

const struct symbol_computed_ops dwarf2_loclist_funcs
Initial value:
= {
1,
}
static void loclist_describe_location(struct symbol *symbol, CORE_ADDR addr, struct ui_file *stream)
Definition: dwarf2loc.c:4508
static struct value * loclist_read_variable(struct symbol *symbol, struct frame_info *frame)
Definition: dwarf2loc.c:4445
static struct value * loclist_read_variable_at_entry(struct symbol *symbol, struct frame_info *frame)
Definition: dwarf2loc.c:4470
static enum symbol_needs_kind loclist_symbol_needs(struct symbol *symbol)
Definition: dwarf2loc.c:4492
static void loclist_tracepoint_var_ref(struct symbol *symbol, struct agent_expr *ax, struct axs_value *value)
Definition: dwarf2loc.c:4598
static void loclist_generate_c_location(struct symbol *sym, string_file &stream, struct gdbarch *gdbarch, unsigned char *registers_used, CORE_ADDR pc, const char *result_name)
Definition: dwarf2loc.c:4618

Definition at line 4641 of file dwarf2loc.c.

Referenced by _initialize_dwarf2_read().

◆ dwarf_always_disassemble

int dwarf_always_disassemble

Definition at line 27045 of file dwarf2read.c.

Referenced by _initialize_dwarf2_read(), and locexpr_describe_location_1().

◆ entry_data_value_funcs

const struct lval_funcs entry_data_value_funcs
static
Initial value:
=
{
NULL,
NULL,
NULL,
NULL,
}
static struct value * entry_data_value_coerce_ref(const struct value *value)
Definition: dwarf2loc.c:1348
static void entry_data_value_free_closure(struct value *v)
Definition: dwarf2loc.c:1375
static void * entry_data_value_copy_closure(const struct value *v)
Definition: dwarf2loc.c:1364

Definition at line 1386 of file dwarf2loc.c.

Referenced by value_of_dwarf_reg_entry().

◆ entry_values_debug

unsigned int entry_values_debug = 0

◆ pieced_value_funcs

const struct lval_funcs pieced_value_funcs
static
Initial value:
= {
}
static void write_pieced_value(struct value *to, struct value *from)
Definition: dwarf2loc.c:2056
static void free_pieced_value_closure(struct value *v)
Definition: dwarf2loc.c:2292
static struct value * coerce_pieced_ref(const struct value *value)
Definition: dwarf2loc.c:2252
static int check_pieced_synthetic_pointer(const struct value *value, LONGEST bit_offset, int bit_length)
Definition: dwarf2loc.c:2065
static void read_pieced_value(struct value *v)
Definition: dwarf2loc.c:2050
static void * copy_pieced_value_closure(const struct value *v)
Definition: dwarf2loc.c:2282
static struct value * indirect_pieced_value(struct value *value)
Definition: dwarf2loc.c:2175

Definition at line 2309 of file dwarf2loc.c.

Referenced by dwarf2_evaluate_loc_desc_full().