aboutsummaryrefslogtreecommitdiff
path: root/gdb/reverse.c
diff options
context:
space:
mode:
Diffstat (limited to 'gdb/reverse.c')
-rw-r--r--gdb/reverse.c35
1 files changed, 9 insertions, 26 deletions
diff --git a/gdb/reverse.c b/gdb/reverse.c
index 4080616..80e414a 100644
--- a/gdb/reverse.c
+++ b/gdb/reverse.c
@@ -30,13 +30,6 @@
/* User interface:
reverse-step, reverse-next etc. */
-static void
-exec_direction_default (void *notused)
-{
- /* Return execution direction to default state. */
- execution_direction = EXEC_FORWARD;
-}
-
/* exec_reverse_once -- accepts an arbitrary gdb command (string),
and executes it with exec-direction set to 'reverse'.
@@ -45,9 +38,7 @@ exec_direction_default (void *notused)
static void
exec_reverse_once (const char *cmd, char *args, int from_tty)
{
- char *reverse_command;
enum exec_direction_kind dir = execution_direction;
- struct cleanup *old_chain;
if (dir == EXEC_REVERSE)
error (_("Already in reverse mode. Use '%s' or 'set exec-dir forward'."),
@@ -56,12 +47,10 @@ exec_reverse_once (const char *cmd, char *args, int from_tty)
if (!target_can_execute_reverse)
error (_("Target %s does not support this command."), target_shortname);
- reverse_command = xstrprintf ("%s %s", cmd, args ? args : "");
- old_chain = make_cleanup (exec_direction_default, NULL);
- make_cleanup (xfree, reverse_command);
- execution_direction = EXEC_REVERSE;
- execute_command (reverse_command, from_tty);
- do_cleanups (old_chain);
+ std::string reverse_command = string_printf ("%s %s", cmd, args ? args : "");
+ scoped_restore restore_exec_dir
+ = make_scoped_restore (&execution_direction, EXEC_REVERSE);
+ execute_command (&reverse_command[0], from_tty);
}
static void
@@ -132,7 +121,6 @@ save_bookmark_command (char *args, int from_tty)
{
/* Get target's idea of a bookmark. */
gdb_byte *bookmark_id = target_get_bookmark (args, from_tty);
- struct bookmark *b, *b1;
struct gdbarch *gdbarch = get_regcache_arch (get_current_regcache ());
/* CR should not cause another identical bookmark. */
@@ -142,9 +130,8 @@ save_bookmark_command (char *args, int from_tty)
error (_("target_get_bookmark failed."));
/* Set up a bookmark struct. */
- b = XCNEW (struct bookmark);
+ bookmark *b = new bookmark ();
b->number = ++bookmark_count;
- init_sal (&b->sal);
b->pc = regcache_read_pc (get_current_regcache ());
b->sal = find_pc_line (b->pc, 0);
b->sal.pspace = get_frame_program_space (get_current_frame ());
@@ -154,7 +141,7 @@ save_bookmark_command (char *args, int from_tty)
/* Add this bookmark to the end of the chain, so that a list
of bookmarks will come out in order of increasing numbers. */
- b1 = bookmark_chain;
+ bookmark *b1 = bookmark_chain;
if (b1 == 0)
bookmark_chain = b;
else
@@ -194,7 +181,7 @@ delete_one_bookmark (int num)
break;
}
xfree (b->opaque_data);
- xfree (b);
+ delete b;
return 1; /* success */
}
return 0; /* failure */
@@ -318,7 +305,7 @@ bookmark_1 (int bnum)
/* Implement "info bookmarks" command. */
static void
-bookmarks_info (char *args, int from_tty)
+info_bookmarks_command (char *args, int from_tty)
{
if (!bookmark_chain)
printf_filtered (_("No bookmarks.\n"));
@@ -335,10 +322,6 @@ bookmarks_info (char *args, int from_tty)
}
}
-
-/* Provide a prototype to silence -Wmissing-prototypes. */
-extern initialize_file_ftype _initialize_reverse;
-
void
_initialize_reverse (void)
{
@@ -382,7 +365,7 @@ Execute backward until just before selected stack frame is called."));
Set a bookmark in the program's execution history.\n\
A bookmark represents a point in the execution history \n\
that can be returned to at a later point in the debug session."));
- add_info ("bookmarks", bookmarks_info, _("\
+ add_info ("bookmarks", info_bookmarks_command, _("\
Status of user-settable bookmarks.\n\
Bookmarks are user-settable markers representing a point in the \n\
execution history that can be returned to later in the same debug \n\