22#if !defined (DWARF2EXPR_H)
139 value *
evaluate (
const gdb_byte *addr,
size_t len,
bool as_lval,
143 struct type *subobj_type =
nullptr,
144 LONGEST subobj_offset = 0);
207 void eval (
const gdb_byte *addr,
size_t len);
224 LONGEST subobj_offset,
bool as_lval);
254 void read_mem (gdb_byte *buf, CORE_ADDR addr,
size_t length);
267 const gdb_byte *buf_end,
268 CORE_ADDR *deref_size_return);
271 CORE_ADDR *fb_offset_return);
274 const gdb_byte *buf_end,
275 CORE_ADDR *sp_offset_return);
280static inline const gdb_byte *
284 size_t bytes_read = read_uleb128_to_uint64 (buf, buf_end, r);
288 return buf + bytes_read;
291static inline const gdb_byte *
295 size_t bytes_read = read_sleb128_to_int64 (buf, buf_end, r);
299 return buf + bytes_read;
302static inline const gdb_byte *
305 size_t bytes_read = skip_leb128 (buf, buf_end);
309 return buf + bytes_read;
313 const gdb_byte *buf_end,
317 const gdb_byte *buf_end,
321 const gdb_byte *buf_end);
static const gdb_byte * gdb_read_uleb128(const gdb_byte *buf, const gdb_byte *buf_end, uint64_t *r)
const gdb_byte * safe_skip_leb128(const gdb_byte *buf, const gdb_byte *buf_end)
@ DWARF_VALUE_IMPLICIT_POINTER
@ DWARF_VALUE_OPTIMIZED_OUT
void dwarf_expr_require_composition(const gdb_byte *, const gdb_byte *, const char *)
static const gdb_byte * gdb_read_sleb128(const gdb_byte *buf, const gdb_byte *buf_end, int64_t *r)
int dwarf_block_to_dwarf_reg_deref(const gdb_byte *buf, const gdb_byte *buf_end, CORE_ADDR *deref_size_return)
const gdb_byte * safe_read_sleb128(const gdb_byte *buf, const gdb_byte *buf_end, int64_t *r)
static const gdb_byte * gdb_skip_leb128(const gdb_byte *buf, const gdb_byte *buf_end)
int dwarf_block_to_sp_offset(struct gdbarch *gdbarch, const gdb_byte *buf, const gdb_byte *buf_end, CORE_ADDR *sp_offset_return)
CORE_ADDR read_addr_from_reg(frame_info_ptr frame, int reg)
const gdb_byte * safe_read_uleb128(const gdb_byte *buf, const gdb_byte *buf_end, uint64_t *r)
int dwarf_block_to_fb_offset(const gdb_byte *buf, const gdb_byte *buf_end, CORE_ADDR *fb_offset_return)
int dwarf_block_to_dwarf_reg(const gdb_byte *buf, const gdb_byte *buf_end)
void execute_stack_op(const gdb_byte *op_ptr, const gdb_byte *op_end)
std::vector< dwarf_stack_value > m_stack
const struct property_addr_info * m_addr_info
void eval(const gdb_byte *addr, size_t len)
struct value * fetch(int n)
void push_address(CORE_ADDR value, bool in_stack_memory)
std::vector< dwarf_expr_piece > m_pieces
bool stack_empty_p() const
dwarf_expr_context(dwarf2_per_objfile *per_objfile, int addr_size)
struct type * address_type() const
value * evaluate(const gdb_byte *addr, size_t len, bool as_lval, dwarf2_per_cu_data *per_cu, frame_info_ptr frame, const struct property_addr_info *addr_info=nullptr, struct type *type=nullptr, struct type *subobj_type=nullptr, LONGEST subobj_offset=0)
CORE_ADDR fetch_address(int n)
struct type * get_base_type(cu_offset die_cu_off)
void push(struct value *value, bool in_stack_memory)
void dwarf_call(cu_offset die_cu_off)
int m_max_recursion_depth
dwarf_value_location m_location
dwarf2_per_cu_data * m_per_cu
bool fetch_in_stack_memory(int n)
void push_dwarf_reg_entry_value(call_site_parameter_kind kind, call_site_parameter_u kind_u, int deref_size)
dwarf2_per_objfile * m_per_objfile
value * fetch_result(struct type *type, struct type *subobj_type, LONGEST subobj_offset, bool as_lval)
virtual ~dwarf_expr_context()=default
void get_frame_base(const gdb_byte **start, size_t *length)
void read_mem(gdb_byte *buf, CORE_ADDR addr, size_t length)
void add_piece(ULONGEST size, ULONGEST offset)
struct dwarf_expr_piece::@42::@43 mem
enum dwarf_value_location location
struct dwarf_expr_piece::@42::@45 ptr
union dwarf_expr_piece::@42 v
struct dwarf_expr_piece::@42::@44 literal
dwarf_stack_value(struct value *value_, int in_stack_memory_)