Add dwarf2_per_objfile parameter to allocate_piece_closure
This allows removing a dwarf2_per_cu_data::dwarf2_per_objfile reference. gdb/ChangeLog: * dwarf2/loc.c (allocate_piece_closure): Add dwarf2_per_objfile parameter. (dwarf2_evaluate_loc_desc_full): Update. Change-Id: Ic4a694a3fc763360a131ee4e3aaf5a5b4735c813
This commit is contained in:
parent
82ca3f5189
commit
3c3cd3d4d7
|
@ -1,3 +1,9 @@
|
|||
2020-05-27 Simon Marchi <simon.marchi@efficios.com>
|
||||
|
||||
* dwarf2/loc.c (allocate_piece_closure): Add dwarf2_per_objfile
|
||||
parameter.
|
||||
(dwarf2_evaluate_loc_desc_full): Update.
|
||||
|
||||
2020-05-27 Simon Marchi <simon.marchi@efficios.com>
|
||||
|
||||
* dwarf2/read.h (dwarf2_read_addr_index): Add dwarf2_per_objfile
|
||||
|
|
|
@ -1576,7 +1576,8 @@ struct piece_closure
|
|||
PIECES. */
|
||||
|
||||
static struct piece_closure *
|
||||
allocate_piece_closure (struct dwarf2_per_cu_data *per_cu,
|
||||
allocate_piece_closure (dwarf2_per_cu_data *per_cu,
|
||||
dwarf2_per_objfile *per_objfile,
|
||||
std::vector<dwarf_expr_piece> &&pieces,
|
||||
struct frame_info *frame)
|
||||
{
|
||||
|
@ -1584,7 +1585,7 @@ allocate_piece_closure (struct dwarf2_per_cu_data *per_cu,
|
|||
|
||||
c->refc = 1;
|
||||
/* We must capture this here due to sharing of DWARF state. */
|
||||
c->per_objfile = per_cu->dwarf2_per_objfile;
|
||||
c->per_objfile = per_objfile;
|
||||
c->per_cu = per_cu;
|
||||
c->pieces = std::move (pieces);
|
||||
if (frame == NULL)
|
||||
|
@ -2245,7 +2246,8 @@ dwarf2_evaluate_loc_desc_full (struct type *type, struct frame_info *frame,
|
|||
if (bit_size > 8 * TYPE_LENGTH (type))
|
||||
invalid_synthetic_pointer ();
|
||||
|
||||
c = allocate_piece_closure (per_cu, std::move (ctx.pieces), frame);
|
||||
c = allocate_piece_closure (per_cu, per_objfile, std::move (ctx.pieces),
|
||||
frame);
|
||||
/* We must clean up the value chain after creating the piece
|
||||
closure but before allocating the result. */
|
||||
free_values.free_to_mark ();
|
||||
|
|
Loading…
Reference in New Issue