GDB (xrefs)
Classes | Typedefs | Enumerations | Functions | Variables
/tmp/gdb-7.10/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 "dwarf2.h"
#include "dwarf2expr.h"
#include "dwarf2loc.h"
#include "dwarf2-frame.h"
#include "compile/compile.h"

Go to the source code of this file.

Classes

struct  dwarf_expr_baton
 
struct  piece_closure
 
struct  needs_frame_baton
 

Typedefs

typedef struct call_sitecall_sitep
 

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, LONGEST byte_offset)
 
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_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 CORE_ADDR dwarf_expr_read_addr_from_reg (void *baton, int dwarf_regnum)
 
static struct valuedwarf_expr_get_reg_value (void *baton, struct type *type, int dwarf_regnum)
 
static void dwarf_expr_read_mem (void *baton, gdb_byte *buf, CORE_ADDR addr, size_t len)
 
static void dwarf_expr_frame_base (void *baton, const gdb_byte **start, size_t *length)
 
static void locexpr_find_frame_base_location (struct symbol *framefunc, CORE_ADDR pc, const gdb_byte **start, size_t *length)
 
static void loclist_find_frame_base_location (struct symbol *framefunc, CORE_ADDR pc, const gdb_byte **start, size_t *length)
 
void func_get_frame_base_dwarf_block (struct symbol *framefunc, CORE_ADDR pc, const gdb_byte **start, size_t *length)
 
static CORE_ADDR dwarf_expr_frame_cfa (void *baton)
 
static CORE_ADDR dwarf_expr_frame_pc (void *baton)
 
static CORE_ADDR dwarf_expr_tls_address (void *baton, CORE_ADDR offset)
 
static void per_cu_dwarf_call (struct dwarf_expr_context *ctx, cu_offset die_offset, struct dwarf2_per_cu_data *per_cu, CORE_ADDR(*get_frame_pc)(void *baton), void *baton)
 
static void dwarf_expr_dwarf_call (struct dwarf_expr_context *ctx, cu_offset die_offset)
 
static struct typedwarf_expr_get_base_type (struct dwarf_expr_context *ctx, cu_offset die_offset)
 
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)
 
 DEF_VEC_P (call_sitep)
 
static void chain_candidate (struct gdbarch *gdbarch, struct call_site_chain **resultp, VEC(call_sitep)*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 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 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 void dwarf_expr_push_dwarf_reg_entry_value (struct dwarf_expr_context *ctx, enum call_site_parameter_kind kind, union call_site_parameter_u kind_u, int deref_size)
 
static CORE_ADDR dwarf_expr_get_addr_index (void *baton, unsigned int index)
 
static CORE_ADDR dwarf_expr_get_obj_addr (void *baton)
 
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, int n_pieces, struct dwarf_expr_piece *pieces, int addr_size)
 
static unsigned int extract_bits_primitive (const gdb_byte **source, unsigned int *source_offset_bits, int *nbits, int bits_big_endian)
 
static unsigned int extract_bits (const gdb_byte **source, unsigned int *source_offset_bits, int nbits, int bits_big_endian)
 
static void insert_bits (unsigned int datum, gdb_byte *dest, unsigned int dest_offset_bits, int nbits, int bits_big_endian)
 
static void copy_bitwise (gdb_byte *dest, unsigned int dest_offset_bits, const gdb_byte *source, unsigned int source_offset_bits, unsigned int bit_count, int bits_big_endian)
 
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, int bit_offset, int bit_length)
 
static CORE_ADDR get_frame_address_in_block_wrapper (void *baton)
 
static struct valueindirect_pieced_value (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, CORE_ADDR addr, CORE_ADDR *valp)
 
int dwarf2_evaluate_property (const struct dynamic_prop *prop, struct property_addr_info *addr_stack, CORE_ADDR *value)
 
void dwarf2_compile_property_to_c (struct ui_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 CORE_ADDR needs_frame_read_addr_from_reg (void *baton, int regnum)
 
static struct valueneeds_frame_get_reg_value (void *baton, struct type *type, int regnum)
 
static void needs_frame_read_mem (void *baton, gdb_byte *buf, CORE_ADDR addr, size_t len)
 
static void needs_frame_frame_base (void *baton, const gdb_byte **start, size_t *length)
 
static CORE_ADDR needs_frame_frame_cfa (void *baton)
 
static CORE_ADDR needs_frame_tls_address (void *baton, CORE_ADDR offset)
 
static void needs_frame_dwarf_call (struct dwarf_expr_context *ctx, cu_offset die_offset)
 
static void needs_dwarf_reg_entry_value (struct dwarf_expr_context *ctx, enum call_site_parameter_kind kind, union call_site_parameter_u kind_u, int deref_size)
 
static CORE_ADDR needs_get_addr_index (void *baton, unsigned int index)
 
static CORE_ADDR needs_get_obj_addr (void *baton)
 
static int dwarf2_loc_desc_needs_frame (const gdb_byte *data, size_t size, struct dwarf2_per_cu_data *per_cu)
 
static void unimplemented (unsigned int op)
 
int dwarf2_reg_to_regnum_or_error (struct gdbarch *arch, int 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, struct gdbarch *arch, 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 int locexpr_read_needs_frame (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 gdbarch *gdbarch, struct agent_expr *ax, struct axs_value *value)
 
static void locexpr_generate_c_location (struct symbol *sym, struct ui_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 int loclist_read_needs_frame (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 gdbarch *gdbarch, struct agent_expr *ax, struct axs_value *value)
 
static void loclist_generate_c_location (struct symbol *sym, struct ui_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 dwarf_expr_context_funcs dwarf_expr_ctx_funcs
 
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
 
static const struct dwarf_expr_context_funcs needs_frame_ctx_funcs
 
const struct symbol_computed_ops dwarf2_locexpr_funcs
 
const struct symbol_computed_ops dwarf2_loclist_funcs
 
initialize_file_ftype _initialize_dwarf2loc
 

Typedef Documentation

typedef struct call_site* call_sitep

Definition at line 730 of file dwarf2loc.c.

Enumeration Type Documentation

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 58 of file dwarf2loc.c.

Function Documentation

void _initialize_dwarf2loc ( void  )
static void access_memory ( struct gdbarch arch,
struct agent_expr expr,
ULONGEST  nbits 
)
static
static struct piece_closure* allocate_piece_closure ( struct dwarf2_per_cu_data per_cu,
int  n_pieces,
struct dwarf_expr_piece pieces,
int  addr_size 
)
static
struct call_site_chain* call_site_find_chain ( struct gdbarch gdbarch,
CORE_ADDR  caller_pc,
CORE_ADDR  callee_pc 
)
static struct call_site_chain* call_site_find_chain_1 ( struct gdbarch gdbarch,
CORE_ADDR  caller_pc,
CORE_ADDR  callee_pc 
)
static
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
static CORE_ADDR call_site_to_target_addr ( struct gdbarch call_site_gdbarch,
struct call_site call_site,
struct frame_info caller_frame 
)
static
static void chain_candidate ( struct gdbarch gdbarch,
struct call_site_chain **  resultp,
VEC(call_sitep)*  chain 
)
static
static int check_pieced_synthetic_pointer ( const struct value value,
int  bit_offset,
int  bit_length 
)
static
static void copy_bitwise ( gdb_byte dest,
unsigned int  dest_offset_bits,
const gdb_byte source,
unsigned int  source_offset_bits,
unsigned int  bit_count,
int  bits_big_endian 
)
static

Definition at line 1560 of file dwarf2loc.c.

References extract_bits(), gdb_assert, and insert_bits().

Referenced by read_pieced_value(), and write_pieced_value().

static void* copy_pieced_value_closure ( const struct value v)
static

Definition at line 2112 of file dwarf2loc.c.

References piece_closure::refc, and value_computed_closure().

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
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
DEF_VEC_P ( call_sitep  )
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
void dwarf2_compile_expr_to_ax ( struct agent_expr expr,
struct axs_value loc,
struct gdbarch arch,
unsigned int  addr_size,
const gdb_byte op_ptr,
const gdb_byte op_end,
struct dwarf2_per_cu_data per_cu 
)
void dwarf2_compile_property_to_c ( struct ui_file stream,
const char *  result_name,
struct gdbarch gdbarch,
unsigned char *  registers_used,
const struct dynamic_prop prop,
CORE_ADDR  pc,
struct symbol sym 
)
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 
)
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,
LONGEST  byte_offset 
)
static

Definition at line 2176 of file dwarf2loc.c.

References _, dwarf_expr_context::addr_size, value::address, allocate_computed_value(), allocate_optimized_out_value(), allocate_piece_closure(), allocate_value(), dwarf_expr_context::baton, CATCH, value::contents, dwarf_expr_context::data, do_cleanups(), dwarf2_per_cu_addr_size(), dwarf2_per_cu_objfile(), dwarf2_per_cu_ref_addr_size(), dwarf2_per_cu_text_offset(), dwarf_expr_ctx_funcs, dwarf_expr_eval(), dwarf_expr_fetch(), dwarf_expr_fetch_address(), dwarf_expr_fetch_in_stack_memory(), DWARF_VALUE_IMPLICIT_POINTER, DWARF_VALUE_LITERAL, DWARF_VALUE_MEMORY, DWARF_VALUE_OPTIMIZED_OUT, DWARF_VALUE_REGISTER, DWARF_VALUE_STACK, END_CATCH, error(), exception_print(), dwarf_expr_baton::frame, dwarf_expr_context::funcs, gdb_stdout, dwarf_expr_context::gdbarch, gdbarch_byte_order(), gdbarch_dwarf2_reg_to_regnum(), get_frame_arch(), get_frame_id(), get_objfile_arch(), if(), dwarf_expr_context::initialized, internal_error(), invalid_synthetic_pointer(), dwarf_expr_context::len, dwarf_expr_context::location, longest_to_int(), make_cleanup_free_dwarf_expr_context(), make_cleanup_value_free(), make_cleanup_value_free_to_mark(), mark_value_bytes_unavailable(), new_dwarf_expr_context(), NO_ENTRY_VALUE_ERROR, NOT_AVAILABLE_ERROR, dwarf_expr_context::num_pieces, dwarf_expr_baton::obj_address, dwarf_expr_context::offset, dwarf_expr_baton::per_cu, 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, throw_exception(), TRY, TYPE_LENGTH, value_as_long(), value_at_lazy(), value_contents_all(), value_contents_copy(), value_contents_raw(), VALUE_FRAME_ID, value_from_register(), value_incref(), value_mark(), value_optimized_out(), and value_type().

Referenced by dwarf2_evaluate_loc_desc(), and indirect_pieced_value().

int dwarf2_evaluate_property ( const struct dynamic_prop prop,
struct property_addr_info addr_stack,
CORE_ADDR value 
)
const gdb_byte* dwarf2_find_location_expression ( struct dwarf2_loclist_baton baton,
size_t *  locexpr_length,
CORE_ADDR  pc 
)
static int dwarf2_loc_desc_needs_frame ( const gdb_byte data,
size_t  size,
struct dwarf2_per_cu_data per_cu 
)
static
static int dwarf2_locexpr_baton_eval ( const struct dwarf2_locexpr_baton dlbaton,
CORE_ADDR  addr,
CORE_ADDR valp 
)
static
int dwarf2_reg_to_regnum_or_error ( struct gdbarch arch,
int  dwarf_reg 
)

Definition at line 2780 of file dwarf2loc.c.

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

Referenced by do_compile_dwarf_expr_to_c(), and dwarf2_compile_expr_to_ax().

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
static void dwarf_expr_dwarf_call ( struct dwarf_expr_context ctx,
cu_offset  die_offset 
)
static
static void dwarf_expr_frame_base ( void *  baton,
const gdb_byte **  start,
size_t *  length 
)
static
static CORE_ADDR dwarf_expr_frame_cfa ( void *  baton)
static

Definition at line 436 of file dwarf2loc.c.

References dwarf2_frame_cfa(), and dwarf_expr_baton::frame.

static CORE_ADDR dwarf_expr_frame_pc ( void *  baton)
static

Definition at line 447 of file dwarf2loc.c.

References dwarf_expr_baton::frame, and get_frame_address_in_block().

static CORE_ADDR dwarf_expr_get_addr_index ( void *  baton,
unsigned int  index 
)
static

Definition at line 1232 of file dwarf2loc.c.

References dwarf2_read_addr_index(), and dwarf_expr_baton::per_cu.

static struct type* dwarf_expr_get_base_type ( struct dwarf_expr_context ctx,
cu_offset  die_offset 
)
static
static CORE_ADDR dwarf_expr_get_obj_addr ( void *  baton)
static

Definition at line 1243 of file dwarf2loc.c.

References _, error(), gdb_assert, and dwarf_expr_baton::obj_address.

static struct value* dwarf_expr_get_reg_value ( void *  baton,
struct type type,
int  dwarf_regnum 
)
static
static void dwarf_expr_push_dwarf_reg_entry_value ( struct dwarf_expr_context ctx,
enum call_site_parameter_kind  kind,
union call_site_parameter_u  kind_u,
int  deref_size 
)
static
static CORE_ADDR dwarf_expr_read_addr_from_reg ( void *  baton,
int  dwarf_regnum 
)
static
static void dwarf_expr_read_mem ( void *  baton,
gdb_byte buf,
CORE_ADDR  addr,
size_t  len 
)
static

Definition at line 335 of file dwarf2loc.c.

References read_memory().

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
static CORE_ADDR dwarf_expr_tls_address ( void *  baton,
CORE_ADDR  offset 
)
static
static struct value* entry_data_value_coerce_ref ( const struct value value)
static
static void* entry_data_value_copy_closure ( const struct value v)
static

Definition at line 1276 of file dwarf2loc.c.

References value_computed_closure(), and value_incref().

static void entry_data_value_free_closure ( struct value v)
static

Definition at line 1287 of file dwarf2loc.c.

References value_computed_closure(), and value_free().

static unsigned int extract_bits ( const gdb_byte **  source,
unsigned int source_offset_bits,
int  nbits,
int  bits_big_endian 
)
static

Definition at line 1489 of file dwarf2loc.c.

References extract_bits_primitive(), and gdb_assert.

Referenced by copy_bitwise().

static unsigned int extract_bits_primitive ( const gdb_byte **  source,
unsigned int source_offset_bits,
int nbits,
int  bits_big_endian 
)
static

Definition at line 1446 of file dwarf2loc.c.

References gdb_assert.

Referenced by extract_bits().

static void free_pieced_value_closure ( struct value v)
static
static struct symbol* func_addr_to_tail_call_list ( struct gdbarch gdbarch,
CORE_ADDR  addr 
)
static
void func_get_frame_base_dwarf_block ( struct symbol framefunc,
CORE_ADDR  pc,
const gdb_byte **  start,
size_t *  length 
)
static void func_verify_no_selftailcall ( struct gdbarch gdbarch,
CORE_ADDR  verify_addr 
)
static
static CORE_ADDR get_ax_pc ( void *  baton)
static

Definition at line 2834 of file dwarf2loc.c.

References agent_expr::scope.

Referenced by dwarf2_compile_expr_to_ax().

static CORE_ADDR get_frame_address_in_block_wrapper ( void *  baton)
static

Definition at line 1996 of file dwarf2loc.c.

References get_frame_address_in_block().

Referenced by indirect_pieced_value().

static struct value* indirect_pieced_value ( struct value value)
static
static void insert_bits ( unsigned int  datum,
gdb_byte dest,
unsigned int  dest_offset_bits,
int  nbits,
int  bits_big_endian 
)
static

Definition at line 1525 of file dwarf2loc.c.

References gdb_assert.

Referenced by copy_bitwise().

static void invalid_synthetic_pointer ( void  )
static

Definition at line 89 of file dwarf2loc.c.

References _, and error().

Referenced by dwarf2_evaluate_loc_desc_full(), and indirect_pieced_value().

static void locexpr_describe_location ( struct symbol symbol,
CORE_ADDR  addr,
struct ui_file stream 
)
static
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
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
static void locexpr_find_frame_base_location ( struct symbol framefunc,
CORE_ADDR  pc,
const gdb_byte **  start,
size_t *  length 
)
static
static void locexpr_generate_c_location ( struct symbol sym,
struct ui_file stream,
struct gdbarch gdbarch,
unsigned char *  registers_used,
CORE_ADDR  pc,
const char *  result_name 
)
static
static int locexpr_read_needs_frame ( struct symbol symbol)
static
static struct value* locexpr_read_variable ( struct symbol symbol,
struct frame_info frame 
)
static
static struct value* locexpr_read_variable_at_entry ( struct symbol symbol,
struct frame_info frame 
)
static
static const char* locexpr_regname ( struct gdbarch gdbarch,
int  dwarf_regnum 
)
static
static void locexpr_tracepoint_var_ref ( struct symbol symbol,
struct gdbarch gdbarch,
struct agent_expr ax,
struct axs_value value 
)
static
static void loclist_describe_location ( struct symbol symbol,
CORE_ADDR  addr,
struct ui_file stream 
)
static
static void loclist_find_frame_base_location ( struct symbol framefunc,
CORE_ADDR  pc,
const gdb_byte **  start,
size_t *  length 
)
static

Definition at line 396 of file dwarf2loc.c.

References dwarf2_find_location_expression(), and SYMBOL_LOCATION_BATON.

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

Definition at line 4328 of file dwarf2loc.c.

static struct value* loclist_read_variable ( struct symbol symbol,
struct frame_info frame 
)
static
static struct value* loclist_read_variable_at_entry ( struct symbol symbol,
struct frame_info frame 
)
static
static void loclist_tracepoint_var_ref ( struct symbol symbol,
struct gdbarch gdbarch,
struct agent_expr ax,
struct axs_value value 
)
static
static void needs_dwarf_reg_entry_value ( struct dwarf_expr_context ctx,
enum call_site_parameter_kind  kind,
union call_site_parameter_u  kind_u,
int  deref_size 
)
static
static void needs_frame_dwarf_call ( struct dwarf_expr_context ctx,
cu_offset  die_offset 
)
static
static void needs_frame_frame_base ( void *  baton,
const gdb_byte **  start,
size_t *  length 
)
static

Definition at line 2619 of file dwarf2loc.c.

References needs_frame_baton::needs_frame.

static CORE_ADDR needs_frame_frame_cfa ( void *  baton)
static

Definition at line 2633 of file dwarf2loc.c.

References needs_frame_baton::needs_frame.

static struct value* needs_frame_get_reg_value ( void *  baton,
struct type type,
int  regnum 
)
static

Definition at line 2602 of file dwarf2loc.c.

References needs_frame_baton::needs_frame, not_lval, and value_zero().

static CORE_ADDR needs_frame_read_addr_from_reg ( void *  baton,
int  regnum 
)
static

Definition at line 2590 of file dwarf2loc.c.

References needs_frame_baton::needs_frame.

static void needs_frame_read_mem ( void *  baton,
gdb_byte buf,
CORE_ADDR  addr,
size_t  len 
)
static

Definition at line 2612 of file dwarf2loc.c.

static CORE_ADDR needs_frame_tls_address ( void *  baton,
CORE_ADDR  offset 
)
static

Definition at line 2643 of file dwarf2loc.c.

References needs_frame_baton::needs_frame.

static CORE_ADDR needs_get_addr_index ( void *  baton,
unsigned int  index 
)
static

Definition at line 2680 of file dwarf2loc.c.

static CORE_ADDR needs_get_obj_addr ( void *  baton)
static

Definition at line 2689 of file dwarf2loc.c.

static void per_cu_dwarf_call ( struct dwarf_expr_context ctx,
cu_offset  die_offset,
struct dwarf2_per_cu_data per_cu,
CORE_ADDR(*)(void *baton)  get_frame_pc,
void *  baton 
)
static
static int piece_end_p ( const gdb_byte data,
const gdb_byte end 
)
static

Definition at line 3562 of file dwarf2loc.c.

Referenced by locexpr_describe_location_piece().

static void read_pieced_value ( struct value v)
static
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 514 of file dwarf2loc.c.

References _, and fprintf_filtered().

Referenced by _initialize_dwarf2loc().

static void tailcall_dump ( struct gdbarch gdbarch,
const struct call_site call_site 
)
static
static void unimplemented ( unsigned int  op)
static

Definition at line 2764 of file dwarf2loc.c.

References _, error(), and name.

Referenced by dwarf2_compile_expr_to_ax().

static struct value* value_of_dwarf_block_entry ( struct type type,
struct frame_info frame,
const gdb_byte block,
size_t  block_len 
)
static
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
static void write_pieced_value ( struct value to,
struct value from 
)
static

Variable Documentation

initialize_file_ftype _initialize_dwarf2loc
const struct symbol_block_ops dwarf2_block_frame_base_locexpr_funcs
Initial value:
=
{
}
static void locexpr_find_frame_base_location(struct symbol *framefunc, CORE_ADDR pc, const gdb_byte **start, size_t *length)
Definition: dwarf2loc.c:375

Definition at line 387 of file dwarf2loc.c.

Referenced by _initialize_dwarf2_read().

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:396

Definition at line 407 of file dwarf2loc.c.

Referenced by _initialize_dwarf2_read().

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:3540
static int locexpr_read_needs_frame(struct symbol *symbol)
Definition: dwarf2loc.c:3550
static struct value * locexpr_read_variable(struct symbol *symbol, struct frame_info *frame)
Definition: dwarf2loc.c:3524
static void locexpr_tracepoint_var_ref(struct symbol *symbol, struct gdbarch *gdbarch, struct agent_expr *ax, struct axs_value *value)
Definition: dwarf2loc.c:4232
static void locexpr_describe_location(struct symbol *symbol, CORE_ADDR addr, struct ui_file *stream)
Definition: dwarf2loc.c:4214
static void locexpr_generate_c_location(struct symbol *sym, struct ui_file *stream, struct gdbarch *gdbarch, unsigned char *registers_used, CORE_ADDR pc, const char *result_name)
Definition: dwarf2loc.c:4249

Definition at line 4268 of file dwarf2loc.c.

Referenced by _initialize_dwarf2_read().

const struct symbol_computed_ops dwarf2_loclist_funcs
Initial value:
= {
1,
}
static void loclist_generate_c_location(struct symbol *sym, struct ui_file *stream, struct gdbarch *gdbarch, unsigned char *registers_used, CORE_ADDR pc, const char *result_name)
Definition: dwarf2loc.c:4452
static void loclist_describe_location(struct symbol *symbol, CORE_ADDR addr, struct ui_file *stream)
Definition: dwarf2loc.c:4344
static struct value * loclist_read_variable(struct symbol *symbol, struct frame_info *frame)
Definition: dwarf2loc.c:4285
static int loclist_read_needs_frame(struct symbol *symbol)
Definition: dwarf2loc.c:4328
static void loclist_tracepoint_var_ref(struct symbol *symbol, struct gdbarch *gdbarch, struct agent_expr *ax, struct axs_value *value)
Definition: dwarf2loc.c:4433
static struct value * loclist_read_variable_at_entry(struct symbol *symbol, struct frame_info *frame)
Definition: dwarf2loc.c:4309

Definition at line 4474 of file dwarf2loc.c.

Referenced by _initialize_dwarf2_read().

int dwarf_always_disassemble

Definition at line 23371 of file dwarf2read.c.

Referenced by locexpr_describe_location_1().

const struct dwarf_expr_context_funcs dwarf_expr_ctx_funcs
Initial value:
=
{
}
static CORE_ADDR dwarf_expr_get_obj_addr(void *baton)
Definition: dwarf2loc.c:1243
static CORE_ADDR dwarf_expr_read_addr_from_reg(void *baton, int dwarf_regnum)
Definition: dwarf2loc.c:311
static void dwarf_expr_push_dwarf_reg_entry_value(struct dwarf_expr_context *ctx, enum call_site_parameter_kind kind, union call_site_parameter_u kind_u, int deref_size)
Definition: dwarf2loc.c:1178
static void dwarf_expr_read_mem(void *baton, gdb_byte *buf, CORE_ADDR addr, size_t len)
Definition: dwarf2loc.c:335
static CORE_ADDR dwarf_expr_frame_pc(void *baton)
Definition: dwarf2loc.c:447
static void dwarf_expr_frame_base(void *baton, const gdb_byte **start, size_t *length)
Definition: dwarf2loc.c:344
static CORE_ADDR dwarf_expr_tls_address(void *baton, CORE_ADDR offset)
Definition: dwarf2loc.c:457
static struct type * dwarf_expr_get_base_type(struct dwarf_expr_context *ctx, cu_offset die_offset)
Definition: dwarf2loc.c:499
static CORE_ADDR dwarf_expr_get_addr_index(void *baton, unsigned int index)
Definition: dwarf2loc.c:1232
static void dwarf_expr_dwarf_call(struct dwarf_expr_context *ctx, cu_offset die_offset)
Definition: dwarf2loc.c:488
static struct value * dwarf_expr_get_reg_value(void *baton, struct type *type, int dwarf_regnum)
Definition: dwarf2loc.c:323
static CORE_ADDR dwarf_expr_frame_cfa(void *baton)
Definition: dwarf2loc.c:436

Definition at line 2154 of file dwarf2loc.c.

Referenced by dwarf2_evaluate_loc_desc_full(), dwarf2_locexpr_baton_eval(), and dwarf_expr_push_dwarf_reg_entry_value().

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:1260
static void entry_data_value_free_closure(struct value *v)
Definition: dwarf2loc.c:1287
static void * entry_data_value_copy_closure(const struct value *v)
Definition: dwarf2loc.c:1276

Definition at line 1298 of file dwarf2loc.c.

unsigned int entry_values_debug = 0

Definition at line 509 of file dwarf2loc.c.

Referenced by dwarf2_tailcall_sniffer_first().

const struct dwarf_expr_context_funcs needs_frame_ctx_funcs
static
Initial value:
=
{
NULL,
}
static void needs_frame_read_mem(void *baton, gdb_byte *buf, CORE_ADDR addr, size_t len)
Definition: dwarf2loc.c:2612
static void needs_frame_dwarf_call(struct dwarf_expr_context *ctx, cu_offset die_offset)
Definition: dwarf2loc.c:2654
static CORE_ADDR needs_frame_tls_address(void *baton, CORE_ADDR offset)
Definition: dwarf2loc.c:2643
static CORE_ADDR needs_frame_frame_cfa(void *baton)
Definition: dwarf2loc.c:2633
static CORE_ADDR needs_get_addr_index(void *baton, unsigned int index)
Definition: dwarf2loc.c:2680
static void needs_dwarf_reg_entry_value(struct dwarf_expr_context *ctx, enum call_site_parameter_kind kind, union call_site_parameter_u kind_u, int deref_size)
Definition: dwarf2loc.c:2665
static void needs_frame_frame_base(void *baton, const gdb_byte **start, size_t *length)
Definition: dwarf2loc.c:2619
static CORE_ADDR needs_get_obj_addr(void *baton)
Definition: dwarf2loc.c:2689
static struct value * needs_frame_get_reg_value(void *baton, struct type *type, int regnum)
Definition: dwarf2loc.c:2602
static CORE_ADDR needs_frame_read_addr_from_reg(void *baton, int regnum)
Definition: dwarf2loc.c:2590

Definition at line 2697 of file dwarf2loc.c.

Referenced by dwarf2_loc_desc_needs_frame().

const struct lval_funcs pieced_value_funcs
static
Initial value:
= {
NULL,
}
static void write_pieced_value(struct value *to, struct value *from)
Definition: dwarf2loc.c:1790
static int check_pieced_synthetic_pointer(const struct value *value, int bit_offset, int bit_length)
Definition: dwarf2loc.c:1956
static void free_pieced_value_closure(struct value *v)
Definition: dwarf2loc.c:2122
static void read_pieced_value(struct value *v)
Definition: dwarf2loc.c:1607
static void * copy_pieced_value_closure(const struct value *v)
Definition: dwarf2loc.c:2112
static struct value * indirect_pieced_value(struct value *value)
Definition: dwarf2loc.c:2005

Definition at line 2142 of file dwarf2loc.c.