X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gdb%2Frecord.c;h=7d46bf1617c611c913665523d55c830300c059de;hb=268a13a5a3f7c6b9b6ffc5ac2d1b24eb41f3fbdc;hp=f4ef2692a1fff1d429ca4b9218f4dc2e8edf33b8;hpb=8c2f95f4346a4ed6593b1e0cb60d1839176e42c2;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/record.c b/gdb/record.c index f4ef2692a1..7d46bf1617 100644 --- a/gdb/record.c +++ b/gdb/record.c @@ -1,6 +1,6 @@ /* Process record and replay target for GDB, the GNU debugger. - Copyright (C) 2008-2017 Free Software Foundation, Inc. + Copyright (C) 2008-2019 Free Software Foundation, Inc. This file is part of GDB. @@ -21,9 +21,9 @@ #include "gdbcmd.h" #include "completer.h" #include "record.h" -#include "observer.h" +#include "observable.h" #include "inferior.h" -#include "common/common-utils.h" +#include "gdbsupport/common-utils.h" #include "cli/cli-utils.h" #include "disasm.h" @@ -75,7 +75,7 @@ require_record_target (void) t = find_record_target (); if (t == NULL) error (_("No record target is currently active.\n" - "Use one of the \"target record-\" commands first.")); + "Use one of the \"target record-\" commands first.")); return t; } @@ -99,25 +99,25 @@ record_start (const char *method, const char *format, int from_tty) if (method == NULL) { if (format == NULL) - execute_command_to_string ((char *) "record", from_tty); + execute_command_to_string ("record", from_tty, false); else error (_("Invalid format.")); } else if (strcmp (method, "full") == 0) { if (format == NULL) - execute_command_to_string ((char *) "record full", from_tty); + execute_command_to_string ("record full", from_tty, false); else error (_("Invalid format.")); } else if (strcmp (method, "btrace") == 0) { if (format == NULL) - execute_command_to_string ((char *) "record btrace", from_tty); + execute_command_to_string ("record btrace", from_tty, false); else if (strcmp (format, "bts") == 0) - execute_command_to_string ((char *) "record btrace bts", from_tty); + execute_command_to_string ("record btrace bts", from_tty, false); else if (strcmp (format, "pt") == 0) - execute_command_to_string ((char *) "record btrace pt", from_tty); + execute_command_to_string ("record btrace pt", from_tty, false); else error (_("Invalid format.")); } @@ -130,7 +130,7 @@ record_start (const char *method, const char *format, int from_tty) void record_stop (int from_tty) { - execute_command_to_string ((char *) "record stop", from_tty); + execute_command_to_string ("record stop", from_tty, false); } /* See record.h. */ @@ -154,9 +154,9 @@ record_read_memory (struct gdbarch *gdbarch, static void record_stop (struct target_ops *t) { - DEBUG ("stop %s", t->to_shortname); + DEBUG ("stop %s", t->shortname ()); - t->to_stop_recording (t); + t->stop_recording (); } /* Unpush the record target. */ @@ -164,7 +164,7 @@ record_stop (struct target_ops *t) static void record_unpush (struct target_ops *t) { - DEBUG ("unpush %s", t->to_shortname); + DEBUG ("unpush %s", t->shortname ()); unpush_target (t); } @@ -174,9 +174,9 @@ record_unpush (struct target_ops *t) void record_disconnect (struct target_ops *t, const char *args, int from_tty) { - gdb_assert (t->to_stratum == record_stratum); + gdb_assert (t->stratum () == record_stratum); - DEBUG ("disconnect %s", t->to_shortname); + DEBUG ("disconnect %s", t->shortname ()); record_stop (t); record_unpush (t); @@ -187,16 +187,16 @@ record_disconnect (struct target_ops *t, const char *args, int from_tty) /* See record.h. */ void -record_detach (struct target_ops *t, const char *args, int from_tty) +record_detach (struct target_ops *t, inferior *inf, int from_tty) { - gdb_assert (t->to_stratum == record_stratum); + gdb_assert (t->stratum () == record_stratum); - DEBUG ("detach %s", t->to_shortname); + DEBUG ("detach %s", t->shortname ()); record_stop (t); record_unpush (t); - target_detach (args, from_tty); + target_detach (inf, from_tty); } /* See record.h. */ @@ -204,9 +204,9 @@ record_detach (struct target_ops *t, const char *args, int from_tty) void record_mourn_inferior (struct target_ops *t) { - gdb_assert (t->to_stratum == record_stratum); + gdb_assert (t->stratum () == record_stratum); - DEBUG ("mourn inferior %s", t->to_shortname); + DEBUG ("mourn inferior %s", t->shortname ()); /* It is safer to not stop recording. Resources will be freed when threads are discarded. */ @@ -220,9 +220,9 @@ record_mourn_inferior (struct target_ops *t) void record_kill (struct target_ops *t) { - gdb_assert (t->to_stratum == record_stratum); + gdb_assert (t->stratum () == record_stratum); - DEBUG ("kill %s", t->to_shortname); + DEBUG ("kill %s", t->shortname ()); /* It is safer to not stop recording. Resources will be freed when threads are discarded. */ @@ -234,7 +234,8 @@ record_kill (struct target_ops *t) /* See record.h. */ int -record_check_stopped_by_breakpoint (struct address_space *aspace, CORE_ADDR pc, +record_check_stopped_by_breakpoint (const address_space *aspace, + CORE_ADDR pc, enum target_stop_reason *reason) { if (breakpoint_inserted_here_p (aspace, pc)) @@ -263,9 +264,9 @@ show_record_debug (struct ui_file *file, int from_tty, /* Alias for "target record". */ static void -cmd_record_start (char *args, int from_tty) +cmd_record_start (const char *args, int from_tty) { - execute_command ((char *) "target record-full", from_tty); + execute_command ("target record-full", from_tty); } /* Truncate the record log from the present point @@ -310,23 +311,23 @@ cmd_record_stop (const char *args, int from_tty) printf_unfiltered (_("Process record is stopped and all execution " "logs are deleted.\n")); - observer_notify_record_changed (current_inferior (), 0, NULL, NULL); + gdb::observers::record_changed.notify (current_inferior (), 0, NULL, NULL); } /* The "set record" command. */ static void -set_record_command (char *args, int from_tty) +set_record_command (const char *args, int from_tty) { printf_unfiltered (_("\"set record\" must be followed " - "by an apporpriate subcommand.\n")); + "by an appropriate subcommand.\n")); help_list (set_record_cmdlist, "set record ", all_commands, gdb_stdout); } /* The "show record" command. */ static void -show_record_command (char *args, int from_tty) +show_record_command (const char *args, int from_tty) { cmd_show_list (show_record_cmdlist, from_tty, ""); } @@ -334,7 +335,7 @@ show_record_command (char *args, int from_tty) /* The "info record" command. */ static void -info_record_command (char *args, int from_tty) +info_record_command (const char *args, int from_tty) { struct target_ops *t; @@ -345,8 +346,8 @@ info_record_command (char *args, int from_tty) return; } - printf_filtered (_("Active record target: %s\n"), t->to_shortname); - t->to_info_record (t); + printf_filtered (_("Active record target: %s\n"), t->shortname ()); + t->info_record (); } /* The "record save" command. */ @@ -365,7 +366,7 @@ cmd_record_save (const char *args, int from_tty) { /* Default recfile name is "gdb_record.PID". */ xsnprintf (recfilename_buffer, sizeof (recfilename_buffer), - "gdb_record.%d", ptid_get_pid (inferior_ptid)); + "gdb_record.%d", inferior_ptid.pid ()); recfilename = recfilename_buffer; } @@ -394,7 +395,7 @@ record_goto (const char *arg) Rewinds the recording (forward or backward) to the given instruction. */ static void -cmd_record_goto (char *arg, int from_tty) +cmd_record_goto (const char *arg, int from_tty) { record_goto (arg); } @@ -451,7 +452,6 @@ get_context_size (const char **arg) { const char *pos; char *end; - int number; pos = skip_spaces (*arg); @@ -615,14 +615,11 @@ cmd_record_insn_history (const char *arg, int from_tty) /* Read function-call-history modifiers from an argument string. */ -static int +static record_print_flags get_call_history_modifiers (const char **arg) { - int modifiers; - const char *args; - - modifiers = 0; - args = *arg; + record_print_flags modifiers = 0; + const char *args = *arg; if (args == NULL) return modifiers; @@ -672,13 +669,11 @@ get_call_history_modifiers (const char **arg) static void cmd_record_call_history (const char *arg, int from_tty) { - int flags, size; - require_record_target (); - flags = get_call_history_modifiers (&arg); + record_print_flags flags = get_call_history_modifiers (&arg); - size = command_size_to_target_size (record_call_history_size); + int size = command_size_to_target_size (record_call_history_size); if (arg == NULL || *arg == 0 || strcmp (arg, "+") == 0) target_call_history (size, flags); @@ -758,7 +753,7 @@ validate_history_size (unsigned int *command_var, unsigned int *setting) [0..UINT_MAX]. See command_size_to_target_size. */ static void -set_record_insn_history_size (char *args, int from_tty, +set_record_insn_history_size (const char *args, int from_tty, struct cmd_list_element *c) { validate_history_size (&record_insn_history_size_setshow_var, @@ -770,7 +765,7 @@ set_record_insn_history_size (char *args, int from_tty, [0..UINT_MAX]. See command_size_to_target_size. */ static void -set_record_call_history_size (char *args, int from_tty, +set_record_call_history_size (const char *args, int from_tty, struct cmd_list_element *c) { validate_history_size (&record_call_history_size_setshow_var, @@ -827,8 +822,8 @@ A size of \"unlimited\" means unlimited lines. The default is 10."), c = add_cmd ("save", class_obscure, cmd_record_save, _("Save the execution log to a file.\n\ -Argument is optional filename.\n\ -Default filename is 'gdb_record.'."), +Usage: record save [FILENAME]\n\ +Default filename is 'gdb_record.PROCESS_ID'."), &record_cmdlist); set_cmd_completer (c, filename_completer);