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 <tom@tromey.com> * dwarf2/frame.c (struct comp_unit) <obstack>: New member. (decode_frame_entry_1): Use the comp_unit obstack.
This commit is contained in:
parent
a7a3ae5c02
commit
0d404d447a
@ -1,3 +1,8 @@
|
||||
2020-02-12 Tom Tromey <tom@tromey.com>
|
||||
|
||||
* dwarf2/frame.c (struct comp_unit) <obstack>: New member.
|
||||
(decode_frame_entry_1): Use the comp_unit obstack.
|
||||
|
||||
2020-02-12 Tom Tromey <tom@tromey.com>
|
||||
|
||||
* dwarf2/frame.c (struct comp_unit): Add initializers and
|
||||
|
||||
@ -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)
|
||||
{
|
||||
|
||||
Loading…
Reference in New Issue
Block a user