[RFA,1/8] Change setup_breakpoint_reporting to return a scoped_restore
Commit Message
This changes setup_breakpoint_reporting to return a scoped_restore,
allowing for some cleanup removal.
ChangeLog
2017-09-10 Tom Tromey <tom@tromey.com>
* mi/mi-cmd-catch.c (mi_cmd_catch_assert)
(mi_cmd_catch_exception, mi_catch_load_unload): Update.
* mi/mi-cmd-break.c (setup_breakpoint_reporting): Return a
scoped_restore.
(mi_cmd_break_insert_1): Update.
* mi/mi-cmd-break.h (setup_breakpoint_reporting): Return a
scoped_restore.
---
gdb/ChangeLog | 10 ++++++++++
gdb/mi/mi-cmd-break.c | 14 +++++---------
gdb/mi/mi-cmd-break.h | 3 ++-
gdb/mi/mi-cmd-catch.c | 10 +++-------
4 files changed, 20 insertions(+), 17 deletions(-)
@@ -1,3 +1,13 @@
+2017-09-10 Tom Tromey <tom@tromey.com>
+
+ * mi/mi-cmd-catch.c (mi_cmd_catch_assert)
+ (mi_cmd_catch_exception, mi_catch_load_unload): Update.
+ * mi/mi-cmd-break.c (setup_breakpoint_reporting): Return a
+ scoped_restore.
+ (mi_cmd_break_insert_1): Update.
+ * mi/mi-cmd-break.h (setup_breakpoint_reporting): Return a
+ scoped_restore.
+
2017-09-10 Andrew Burgess <andrew.burgess@embecosm.com>
* utils.c (abort_with_message): Don't compare gdb_stderr to NULL,
@@ -64,26 +64,22 @@ enum bp_type
};
/* Arrange for all new breakpoints and catchpoints to be reported to
- CURRENT_UIOUT until the cleanup returned by this function is run.
+ CURRENT_UIOUT until the destructor of the returned scoped_restore
+ is run.
Note that MI output will be probably invalid if more than one
breakpoint is created inside one MI command. */
-struct cleanup *
+scoped_restore_tmpl<int>
setup_breakpoint_reporting (void)
{
- struct cleanup *rev_flag;
-
if (! mi_breakpoint_observers_installed)
{
observer_attach_breakpoint_created (breakpoint_notify);
mi_breakpoint_observers_installed = 1;
}
- rev_flag = make_cleanup_restore_integer (&mi_can_breakpoint_notify);
- mi_can_breakpoint_notify = 1;
-
- return rev_flag;
+ return make_scoped_restore (&mi_can_breakpoint_notify, 1);
}
@@ -301,7 +297,7 @@ mi_cmd_break_insert_1 (int dprintf, const char *command, char **argv, int argc)
}
/* Now we have what we need, let's insert the breakpoint! */
- setup_breakpoint_reporting ();
+ scoped_restore restore_breakpoint_reporting = setup_breakpoint_reporting ();
if (tracepoint)
{
@@ -21,10 +21,11 @@
#ifndef MI_CMD_BREAK_H
#define MI_CMD_BREAK_H
+#include "common/scoped_restore.h"
/* Setup the reporting of the insertion of a new breakpoint or
catchpoint. */
-struct cleanup *setup_breakpoint_reporting (void);
+scoped_restore_tmpl<int> setup_breakpoint_reporting (void);
#endif
@@ -79,7 +79,7 @@ mi_cmd_catch_assert (const char *cmd, char *argv[], int argc)
if (oind != argc)
error (_("Invalid argument: %s"), argv[oind]);
- setup_breakpoint_reporting ();
+ scoped_restore restore_breakpoint_reporting = setup_breakpoint_reporting ();
/* create_ada_exception_catchpoint needs CONDITION to be xstrdup'ed,
and will assume control of its lifetime. */
if (condition != NULL)
@@ -156,7 +156,7 @@ mi_cmd_catch_exception (const char *cmd, char *argv[], int argc)
if (ex_kind == ada_catch_exception_unhandled && exception_name != NULL)
error (_("\"-e\" and \"-u\" are mutually exclusive"));
- setup_breakpoint_reporting ();
+ scoped_restore restore_breakpoint_reporting = setup_breakpoint_reporting ();
/* create_ada_exception_catchpoint needs EXCEPTION_NAME and CONDITION
to be xstrdup'ed, and will assume control of their lifetime. */
if (exception_name != NULL)
@@ -173,7 +173,6 @@ mi_cmd_catch_exception (const char *cmd, char *argv[], int argc)
static void
mi_catch_load_unload (int load, char *argv[], int argc)
{
- struct cleanup *back_to;
const char *actual_cmd = load ? "-catch-load" : "-catch-unload";
int temp = 0;
int enabled = 1;
@@ -215,11 +214,8 @@ mi_catch_load_unload (int load, char *argv[], int argc)
if (oind < argc -1)
error (_("-catch-load/unload: Garbage following the <library name>"));
- back_to = setup_breakpoint_reporting ();
-
+ scoped_restore restore_breakpoint_reporting = setup_breakpoint_reporting ();
add_solib_catchpoint (argv[oind], load, temp, enabled);
-
- do_cleanups (back_to);
}
/* Handler for the -catch-load. */