Introduce cleanup to restore current_uiout
Make a globally available cleanup from a pre-existing one in infrun.c. This is used in a following patch. gdb/ChangeLog: * infrun.c (restore_current_uiout_cleanup): Move to ui-out.c. (print_stop_event): Use make_cleanup_restore_current_uiout. * python/python.c (execute_gdb_command): Likewise. * ui-out.c (restore_current_uiout_cleanup): Move from infrun.c. (make_cleanup_restore_current_uiout): New function definition. * ui-out.h (make_cleanup_restore_current_uiout): New function declaration. * utils.c (do_restore_ui_out): Remove. (make_cleanup_restore_ui_out): Remove. * utils.h (make_cleanup_restore_ui_out): Remove.
This commit is contained in:
parent
325fac504a
commit
cd94f6d535
7 changed files with 38 additions and 38 deletions
|
@ -1,3 +1,16 @@
|
|||
2016-09-16 Simon Marchi <simark@simark.ca>
|
||||
|
||||
* infrun.c (restore_current_uiout_cleanup): Move to ui-out.c.
|
||||
(print_stop_event): Use make_cleanup_restore_current_uiout.
|
||||
* python/python.c (execute_gdb_command): Likewise.
|
||||
* ui-out.c (restore_current_uiout_cleanup): Move from infrun.c.
|
||||
(make_cleanup_restore_current_uiout): New function definition.
|
||||
* ui-out.h (make_cleanup_restore_current_uiout): New function
|
||||
declaration.
|
||||
* utils.c (do_restore_ui_out): Remove.
|
||||
(make_cleanup_restore_ui_out): Remove.
|
||||
* utils.h (make_cleanup_restore_ui_out): Remove.
|
||||
|
||||
2016-09-16 Pedro Alves <palves@redhat.com>
|
||||
|
||||
* defs.h (min, max): Delete.
|
||||
|
|
12
gdb/infrun.c
12
gdb/infrun.c
|
@ -8096,16 +8096,6 @@ print_stop_location (struct target_waitstatus *ws)
|
|||
print_stack_frame (get_selected_frame (NULL), 0, source_flag, 1);
|
||||
}
|
||||
|
||||
/* Cleanup that restores a previous current uiout. */
|
||||
|
||||
static void
|
||||
restore_current_uiout_cleanup (void *arg)
|
||||
{
|
||||
struct ui_out *saved_uiout = (struct ui_out *) arg;
|
||||
|
||||
current_uiout = saved_uiout;
|
||||
}
|
||||
|
||||
/* See infrun.h. */
|
||||
|
||||
void
|
||||
|
@ -8118,7 +8108,7 @@ print_stop_event (struct ui_out *uiout)
|
|||
|
||||
get_last_target_status (&last_ptid, &last);
|
||||
|
||||
old_chain = make_cleanup (restore_current_uiout_cleanup, current_uiout);
|
||||
old_chain = make_cleanup_restore_current_uiout ();
|
||||
current_uiout = uiout;
|
||||
|
||||
print_stop_location (&last);
|
||||
|
|
|
@ -654,7 +654,8 @@ execute_gdb_command (PyObject *self, PyObject *args, PyObject *kw)
|
|||
make_cleanup_restore_integer (¤t_ui->async);
|
||||
current_ui->async = 0;
|
||||
|
||||
make_cleanup_restore_ui_out (¤t_uiout);
|
||||
make_cleanup_restore_current_uiout ();
|
||||
|
||||
/* Use the console interpreter uiout to have the same print format
|
||||
for console or MI. */
|
||||
interp = interp_lookup (current_ui, "console");
|
||||
|
|
18
gdb/ui-out.c
18
gdb/ui-out.c
|
@ -953,6 +953,24 @@ ui_out_destroy (struct ui_out *uiout)
|
|||
xfree (uiout);
|
||||
}
|
||||
|
||||
/* Cleanup that restores a previous current uiout. */
|
||||
|
||||
static void
|
||||
restore_current_uiout_cleanup (void *arg)
|
||||
{
|
||||
struct ui_out *saved_uiout = (struct ui_out *) arg;
|
||||
|
||||
current_uiout = saved_uiout;
|
||||
}
|
||||
|
||||
/* See ui-out.h. */
|
||||
|
||||
struct cleanup *
|
||||
make_cleanup_restore_current_uiout (void)
|
||||
{
|
||||
return make_cleanup (restore_current_uiout_cleanup, current_uiout);
|
||||
}
|
||||
|
||||
/* Standard gdb initialization hook. */
|
||||
|
||||
void
|
||||
|
|
|
@ -247,4 +247,8 @@ extern void ui_out_destroy (struct ui_out *uiout);
|
|||
|
||||
extern int ui_out_redirect (struct ui_out *uiout, struct ui_file *outstream);
|
||||
|
||||
/* Make a cleanup that restores the previous current uiout. */
|
||||
|
||||
extern struct cleanup *make_cleanup_restore_current_uiout (void);
|
||||
|
||||
#endif /* UI_OUT_H */
|
||||
|
|
23
gdb/utils.c
23
gdb/utils.c
|
@ -338,29 +338,6 @@ struct restore_ui_out_closure
|
|||
struct ui_out *value;
|
||||
};
|
||||
|
||||
static void
|
||||
do_restore_ui_out (void *p)
|
||||
{
|
||||
struct restore_ui_out_closure *closure
|
||||
= (struct restore_ui_out_closure *) p;
|
||||
|
||||
*(closure->variable) = closure->value;
|
||||
}
|
||||
|
||||
/* Remember the current value of *VARIABLE and make it restored when
|
||||
the cleanup is run. */
|
||||
|
||||
struct cleanup *
|
||||
make_cleanup_restore_ui_out (struct ui_out **variable)
|
||||
{
|
||||
struct restore_ui_out_closure *c = XNEW (struct restore_ui_out_closure);
|
||||
|
||||
c->variable = variable;
|
||||
c->value = *variable;
|
||||
|
||||
return make_cleanup_dtor (do_restore_ui_out, (void *) c, xfree);
|
||||
}
|
||||
|
||||
struct restore_ui_file_closure
|
||||
{
|
||||
struct ui_file **variable;
|
||||
|
|
|
@ -93,9 +93,6 @@ extern struct cleanup *make_cleanup_restore_uinteger (unsigned int *variable);
|
|||
struct target_ops;
|
||||
extern struct cleanup *make_cleanup_unpush_target (struct target_ops *ops);
|
||||
|
||||
|
||||
extern struct cleanup *
|
||||
make_cleanup_restore_ui_out (struct ui_out **variable);
|
||||
extern struct cleanup *
|
||||
make_cleanup_restore_ui_file (struct ui_file **variable);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue