* frame-unwind.h (frame_dealloc_cache_ftype): Define.
(struct frame_unwind): Add dealloc_cache. * frame.c (reinit_frame_cache): Call dealloc_cache on all caches. * libunwind-frame.h (libunwind_frame_dealloc_cache): Declare. * libunwind-frame.c (libunwind_frame_dealloc_cache): Define. (libunwind_frame_unwind): Set dealloc_cache. * ia64-tdep.c (ia64_libunwind_frame_unwind): Set dealloc_cache.
This commit is contained in:
parent
4339e69e64
commit
272dfcfd78
6 changed files with 48 additions and 2 deletions
11
gdb/frame.c
11
gdb/frame.c
|
@ -1077,6 +1077,17 @@ frame_observer_target_changed (struct target_ops *target)
|
|||
void
|
||||
reinit_frame_cache (void)
|
||||
{
|
||||
struct frame_info *fi;
|
||||
|
||||
/* Tear down all frame caches. */
|
||||
for (fi = current_frame; fi != NULL; fi = fi->prev)
|
||||
{
|
||||
if (fi->prologue_cache && fi->unwind->dealloc_cache)
|
||||
fi->unwind->dealloc_cache (fi, fi->prologue_cache);
|
||||
if (fi->base_cache && fi->base->unwind->dealloc_cache)
|
||||
fi->base->unwind->dealloc_cache (fi, fi->base_cache);
|
||||
}
|
||||
|
||||
/* Since we can't really be sure what the first object allocated was */
|
||||
obstack_free (&frame_cache_obstack, 0);
|
||||
obstack_init (&frame_cache_obstack);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue