Add dwarf2_per_objfile parameter to allocate_piece_closure
authorSimon Marchi <simon.marchi@efficios.com>
Wed, 27 May 2020 15:14:03 +0000 (11:14 -0400)
committerSimon Marchi <simon.marchi@efficios.com>
Wed, 27 May 2020 15:15:57 +0000 (11:15 -0400)
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

gdb/ChangeLog
gdb/dwarf2/loc.c

index 1df34cc862235c7d917c1866da76177cde890224..fc965a4aa89f0fc41bf689326448d92ab8d645c6 100644 (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
index 5692cf0027911ac5414e267df8fa56318459b259..99a3a53e11a600432d7d9a2bb4f794a5c68bb592 100644 (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 ();