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:
Simon Marchi 2020-05-27 11:14:03 -04:00
parent 82ca3f5189
commit 3c3cd3d4d7
2 changed files with 11 additions and 3 deletions

View File

@ -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

View File

@ -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 ();