From 0d404d447ae34e31bdf58ba09c5d3254db3766e1 Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Wed, 12 Feb 2020 15:45:08 -0700 Subject: [PATCH] Add per-unit obstack This adds an auto_obstack to the DWARF frame comp_unit object, and then changes the remaining code here to use the comp_unit obstack rather than the objfile obstack. At this point, all the storage for frame data is self-contained -- that is, it is independent of the objfile. gdb/ChangeLog 2020-02-12 Tom Tromey * dwarf2/frame.c (struct comp_unit) : New member. (decode_frame_entry_1): Use the comp_unit obstack. --- gdb/ChangeLog | 5 +++++ gdb/dwarf2/frame.c | 7 +++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 1ac98840b0c..5b705632af3 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2020-02-12 Tom Tromey + + * dwarf2/frame.c (struct comp_unit) : New member. + (decode_frame_entry_1): Use the comp_unit obstack. + 2020-02-12 Tom Tromey * dwarf2/frame.c (struct comp_unit): Add initializers and diff --git a/gdb/dwarf2/frame.c b/gdb/dwarf2/frame.c index b08e792a8a1..53f90799819 100644 --- a/gdb/dwarf2/frame.c +++ b/gdb/dwarf2/frame.c @@ -164,6 +164,9 @@ struct comp_unit /* The FDE table. */ dwarf2_fde_table fde_table; + + /* Hold data used by this module. */ + auto_obstack obstack; }; static struct dwarf2_fde *dwarf2_frame_find_fde (CORE_ADDR *pc, @@ -1777,7 +1780,7 @@ decode_frame_entry_1 (struct comp_unit *unit, const gdb_byte *start, if (find_cie (cie_table, cie_pointer)) return end; - cie = XOBNEW (&unit->objfile->objfile_obstack, struct dwarf2_cie); + cie = XOBNEW (&unit->obstack, struct dwarf2_cie); cie->initial_instructions = NULL; cie->cie_pointer = cie_pointer; @@ -1956,7 +1959,7 @@ decode_frame_entry_1 (struct comp_unit *unit, const gdb_byte *start, if (cie_pointer >= unit->dwarf_frame_size) return NULL; - fde = XOBNEW (&unit->objfile->objfile_obstack, struct dwarf2_fde); + fde = XOBNEW (&unit->obstack, struct dwarf2_fde); fde->cie = find_cie (cie_table, cie_pointer); if (fde->cie == NULL) { -- 2.30.2