mirror of
https://github.com/bminor/binutils-gdb.git
synced 2025-12-26 09:08:59 +00:00
Fix dwarf_expr_context method regressions
This fixes some regressions found in the patch to convert dwarf_expr_context to use methods. Specifically: * get_base_type could erroneously throw; this was rewritten to move the size checks into the only spot needing them. * Previously the "symbol needs frame" implementation reused th "cfa" function for the get_frame_pc slot; this reimplements it under the correct name. * Not enough members were saved and restored in one implementation of push_dwarf_reg_entry_value; this patch fixes this oversight and also takes the opportunity to remove an extraneous structure definition. 2016-11-02 Tom Tromey <tom@tromey.com> * dwarf2loc.c (dwarf_evaluate_loc_desc::get_base_type): Rename from impl_get_base_type. Rewrite. (struct dwarf_expr_baton): Remove. (dwarf_evaluate_loc_desc::push_dwarf_reg_entry_value): Save and restore more fields. (symbol_needs_eval_context::get_frame_pc): New method. * dwarf2expr.h (dwarf_expr_context::get_base_type): Now public, virtual. (dwarf_expr_context::impl_get_base_type): Remove. * dwarf2expr.c (dwarf_expr_context::get_base_type): Remove.
This commit is contained in:
@@ -179,10 +179,9 @@ struct dwarf_expr_context
|
||||
|
||||
/* Return the base type given by the indicated DIE. This can throw
|
||||
an exception if the DIE is invalid or does not represent a base
|
||||
type. If can also be NULL in the special case where the
|
||||
callbacks are not performing evaluation, and thus it is
|
||||
meaningful to substitute a stub type of the correct size. */
|
||||
virtual struct type *impl_get_base_type (cu_offset die)
|
||||
type. SIZE is non-zero if this function should verify that the
|
||||
resulting type has the correct size. */
|
||||
virtual struct type *get_base_type (cu_offset die, int size)
|
||||
{
|
||||
/* Anything will do. */
|
||||
return builtin_type (this->gdbarch)->builtin_int;
|
||||
@@ -210,7 +209,6 @@ private:
|
||||
void push (struct value *value, int in_stack_memory);
|
||||
int stack_empty_p () const;
|
||||
void add_piece (ULONGEST size, ULONGEST offset);
|
||||
struct type *get_base_type (cu_offset die, int size);
|
||||
void execute_stack_op (const gdb_byte *op_ptr, const gdb_byte *op_end);
|
||||
void pop ();
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user