diff options
author | Tom Tromey <tom@tromey.com> | 2016-09-22 20:29:11 -0600 |
---|---|---|
committer | Tom Tromey <tom@tromey.com> | 2016-10-21 14:17:31 -0600 |
commit | b7b633e9b13fc5697af035f4504c9790c612a8c7 (patch) | |
tree | 0da81b5f31738da5c2aa84819d709a66ef9d4583 /gdb/infrun.c | |
parent | 9a1e3f003122c97d6e1822c472bcd37f59fb1a74 (diff) | |
download | gdb-b7b633e9b13fc5697af035f4504c9790c612a8c7.zip gdb-b7b633e9b13fc5697af035f4504c9790c612a8c7.tar.gz gdb-b7b633e9b13fc5697af035f4504c9790c612a8c7.tar.bz2 |
Use RAII to save and restore scalars
This patch replaces many (but not all) uses of
make_cleanup_restore_integer with a simple RAII-based template class.
It also removes the similar restore_execution_direction cleanup in
favor of this new class. Subsequent patches will replace other
similar cleanups with this class.
The class is typically instantiated using make_scoped_restore. This
allows for template argument deduction.
2016-10-21 Tom Tromey <tom@tromey.com>
* common/scoped_restore.h: New file.
* utils.h: Include scoped_restore.h.
* top.c (execute_command_to_string): Use scoped_restore.
* python/python.c (python_interactive_command): Use
scoped_restore.
(python_command, execute_gdb_command): Likewise.
* printcmd.c (do_one_display): Use scoped_restore.
* mi/mi-main.c (exec_continue): Use scoped_restore.
* mi/mi-cmd-var.c (mi_cmd_var_assign): Use scoped_restore.
* linux-fork.c (checkpoint_command): Use scoped_restore.
* infrun.c (restore_execution_direction): Remove.
(fetch_inferior_event): Use scoped_restore.
* compile/compile.c (compile_file_command): Use
scoped_restore.
(compile_code_command, compile_print_command): Likewise.
* cli/cli-script.c (execute_user_command): Use
scoped_restore.
(while_command, if_command, script_from_file): Likewise.
* arm-tdep.c (arm_insert_single_step_breakpoint): Use
scoped_restore.
Diffstat (limited to 'gdb/infrun.c')
-rw-r--r-- | gdb/infrun.c | 16 |
1 files changed, 2 insertions, 14 deletions
diff --git a/gdb/infrun.c b/gdb/infrun.c index 2636a19..6fc1acf 100644 --- a/gdb/infrun.c +++ b/gdb/infrun.c @@ -3879,17 +3879,6 @@ all_uis_on_sync_execution_starting (void) } } -/* A cleanup that restores the execution direction to the value saved - in *ARG. */ - -static void -restore_execution_direction (void *arg) -{ - enum exec_direction_kind *save_exec_dir = (enum exec_direction_kind *) arg; - - execution_direction = *save_exec_dir; -} - /* Asynchronous version of wait_for_inferior. It is called by the event loop whenever a change of state is detected on the file descriptor corresponding to the target. It can be called more than @@ -3906,7 +3895,6 @@ fetch_inferior_event (void *client_data) struct execution_control_state *ecs = &ecss; struct cleanup *old_chain = make_cleanup (null_cleanup, NULL); struct cleanup *ts_old_chain; - enum exec_direction_kind save_exec_dir = execution_direction; int cmd_done = 0; ptid_t waiton_ptid = minus_one_ptid; @@ -3945,8 +3933,8 @@ fetch_inferior_event (void *client_data) event. */ target_dcache_invalidate (); - make_cleanup (restore_execution_direction, &save_exec_dir); - execution_direction = target_execution_direction (); + scoped_restore save_exec_dir + = make_scoped_restore (&execution_direction, target_execution_direction ()); ecs->ptid = do_target_wait (waiton_ptid, &ecs->ws, target_can_async_p () ? TARGET_WNOHANG : 0); |