aboutsummaryrefslogtreecommitdiff
path: root/gdb/stack.c
diff options
context:
space:
mode:
Diffstat (limited to 'gdb/stack.c')
-rw-r--r--gdb/stack.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/gdb/stack.c b/gdb/stack.c
index abdd6f3..4867669 100644
--- a/gdb/stack.c
+++ b/gdb/stack.c
@@ -362,11 +362,13 @@ print_stack_frame (frame_info_ptr frame, int print_level,
if (current_uiout->is_mi_like_p ())
print_what = LOC_AND_ADDRESS;
+ frame.prepare_reinflate ();
try
{
print_frame_info (user_frame_print_options,
frame, print_level, print_what, 1 /* print_args */,
set_current_sal);
+ frame.reinflate ();
if (set_current_sal)
set_current_sal_from_frame (frame);
}
@@ -742,6 +744,11 @@ print_frame_args (const frame_print_options &fp_opts,
= (print_names
&& fp_opts.print_frame_arguments != print_frame_arguments_none);
+ /* If one of the arguments has a pretty printer that calls a
+ function of the inferior to print it, the pointer must be
+ reinflatable. */
+ frame.prepare_reinflate ();
+
/* Temporarily change the selected frame to the given FRAME.
This allows routines that rely on the selected frame instead
of being given a frame as parameter to use the correct frame. */
@@ -902,6 +909,7 @@ print_frame_args (const frame_print_options &fp_opts,
}
first = 0;
+ frame.reinflate ();
}
}
@@ -1172,6 +1180,7 @@ print_frame_info (const frame_print_options &fp_opts,
print_source_lines (sal.symtab, sal.line, sal.line + 1, 0);
}
+ frame.reinflate ();
/* If disassemble-next-line is set to on and there is line debug
messages, output assembly codes for next line. */
@@ -2061,6 +2070,7 @@ backtrace_command_1 (const frame_print_options &fp_opts,
for (fi = trailing; fi && count--; fi = get_prev_frame (fi))
{
QUIT;
+ fi.prepare_reinflate ();
/* Don't use print_stack_frame; if an error() occurs it probably
means further attempts to backtrace would fail (on the other
@@ -2085,6 +2095,7 @@ backtrace_command_1 (const frame_print_options &fp_opts,
}
/* Save the last frame to check for error conditions. */
+ fi.reinflate ();
trailing = fi;
}