diff options
author | Jan Kratochvil <jan.kratochvil@redhat.com> | 2012-07-16 19:15:39 +0000 |
---|---|---|
committer | Jan Kratochvil <jan.kratochvil@redhat.com> | 2012-07-16 19:15:39 +0000 |
commit | 8f04399994587ef7931511d18d72526de3f6f2b3 (patch) | |
tree | 919facc060422aa198d79463c40c02b44f04fdbe /gdb/printcmd.c | |
parent | ae5e0686eef580b284df2f764cf29b38ee41b675 (diff) | |
download | gdb-8f04399994587ef7931511d18d72526de3f6f2b3.zip gdb-8f04399994587ef7931511d18d72526de3f6f2b3.tar.gz gdb-8f04399994587ef7931511d18d72526de3f6f2b3.tar.bz2 |
gdb/
PR 11914
* f-valprint.c (info_common_command): New variable frame_id.
Reinitialize FI form FRAME_ID after each print_variable_and_value.
* printcmd.c (print_variable_and_value): Extend function comment.
Add comment for invalidated FRAME.
* stack.c (backtrace_command_1): New variable frame_id. Reinitialize
FI form FRAME_ID after each print_frame_local_vars.
(struct print_variable_and_value_data): Change frame to frame_id.
(do_print_variable_and_value): New variable frame, initialize it from
p->frame_id. Add comment for invalidated FRAME.
(print_frame_local_vars, print_frame_arg_vars): New function comment.
Update CB_DATA.FRAME to CB_DATA.FRAME_ID initialization. Add comment
for invalidated FRAME.
gdb/testsuite/
PR 11914
* gdb.python/py-prettyprint.c (eval_func, eval_sub): New.
(main): Call eval_sub.
* gdb.python/py-prettyprint.exp:
(python execfile ('py-prettyprint.py')): Move it earlier.
New breakpoint for eval-break.
(continue to breakpoint: eval-break, info locals): New test.
(python execfile ('py-prettyprint.py')): Move it from here.
* gdb.python/py-prettyprint.py (class pp_eval_type): New.
(register_pretty_printers): Register pp_eval_type.
Diffstat (limited to 'gdb/printcmd.c')
-rw-r--r-- | gdb/printcmd.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/gdb/printcmd.c b/gdb/printcmd.c index 2a0a886..d5b5b63 100644 --- a/gdb/printcmd.c +++ b/gdb/printcmd.c @@ -1961,7 +1961,9 @@ clear_dangling_display_expressions (struct so_list *solib) struct symbol. NAME is the name to print; if NULL then VAR's print name will be used. STREAM is the ui_file on which to print the value. INDENT specifies the number of indent levels to print - before printing the variable name. */ + before printing the variable name. + + This function invalidates FRAME. */ void print_variable_and_value (const char *name, struct symbol *var, @@ -1983,6 +1985,10 @@ print_variable_and_value (const char *name, struct symbol *var, get_user_print_options (&opts); opts.deref_ref = 1; common_val_print (val, stream, indent, &opts, current_language); + + /* common_val_print invalidates FRAME when a pretty printer calls inferior + function. */ + frame = NULL; } if (except.reason < 0) fprintf_filtered(stream, "<error reading variable %s (%s)>", name, |