diff options
Diffstat (limited to 'gdb/stack.c')
-rw-r--r-- | gdb/stack.c | 11 |
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; } |