Fix dwarf_expr_context method regressions
authorTom Tromey <tom@tromey.com>
Mon, 31 Oct 2016 02:45:08 +0000 (20:45 -0600)
committerTom Tromey <tom@tromey.com>
Wed, 2 Nov 2016 22:01:38 +0000 (16:01 -0600)
commit7d5697f9e27f79e1decc1215f33088cee9f7d863
tree7ed7870c449ffcde146aaa2f559a1a72c82698ab
parent47acf0bd9faef8634d242e19ec3b7f784d10ba76
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.
gdb/ChangeLog
gdb/dwarf2expr.c
gdb/dwarf2expr.h
gdb/dwarf2loc.c