aboutsummaryrefslogtreecommitdiff
path: root/gdb
diff options
context:
space:
mode:
Diffstat (limited to 'gdb')
-rw-r--r--gdb/ChangeLog14
-rw-r--r--gdb/NEWS5
-rw-r--r--gdb/common/btrace-common.c20
-rw-r--r--gdb/common/btrace-common.h3
-rw-r--r--gdb/doc/ChangeLog7
-rw-r--r--gdb/doc/gdb.texinfo7
-rw-r--r--gdb/doc/observer.texi7
-rw-r--r--gdb/mi/mi-interp.c25
-rw-r--r--gdb/record-btrace.c4
-rw-r--r--gdb/record-full.c2
-rw-r--r--gdb/record.c2
-rw-r--r--gdb/testsuite/ChangeLog5
-rw-r--r--gdb/testsuite/gdb.mi/mi-record-changed.exp4
13 files changed, 94 insertions, 11 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index af4ddcc..01cc770 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,17 @@
+2016-06-06 Simon Marchi <simon.marchi@ericsson.com>
+
+ * NEWS: Mention the new fields in =record-started.
+ * common/btrace-common.h (btrace_format_short_string): New function
+ declaration.
+ * common/btrace-common.c (btrace_format_short_string): New
+ function.
+ * mi/mi-interp.c (mi_record_changed): Output method and format
+ fields in the =record-started record.
+ * record-btrace.c (record_btrace_open): Adapt record_changed
+ notification.
+ * record-full.c (record_full_open): Likewise.
+ * record.c (cmd_record_stop): Likewise.
+
2016-06-02 Jon Turney <jon.turney@dronecode.org.uk>
* windows-nat.c (handle_output_debug_string): Return type of
diff --git a/gdb/NEWS b/gdb/NEWS
index dce79a2..253c8e5 100644
--- a/gdb/NEWS
+++ b/gdb/NEWS
@@ -67,6 +67,11 @@ maint selftest
including JIT compiling fast tracepoint's conditional expression
bytecode into native code.
+* MI async record =record-started now includes the method and format used for
+ recording. For example:
+
+ =record-started,thread-group="i1",method="btrace",format="bts"
+
*** Changes in GDB 7.11
* GDB now supports debugging kernel-based threads on FreeBSD.
diff --git a/gdb/common/btrace-common.c b/gdb/common/btrace-common.c
index eba3979..90aef76 100644
--- a/gdb/common/btrace-common.c
+++ b/gdb/common/btrace-common.c
@@ -43,6 +43,26 @@ btrace_format_string (enum btrace_format format)
/* See btrace-common.h. */
+const char *
+btrace_format_short_string (enum btrace_format format)
+{
+ switch (format)
+ {
+ case BTRACE_FORMAT_NONE:
+ return "unknown";
+
+ case BTRACE_FORMAT_BTS:
+ return "bts";
+
+ case BTRACE_FORMAT_PT:
+ return "pt";
+ }
+
+ internal_error (__FILE__, __LINE__, _("Unknown branch trace format"));
+}
+
+/* See btrace-common.h. */
+
void
btrace_data_init (struct btrace_data *data)
{
diff --git a/gdb/common/btrace-common.h b/gdb/common/btrace-common.h
index ad208cd..d702bb8 100644
--- a/gdb/common/btrace-common.h
+++ b/gdb/common/btrace-common.h
@@ -214,6 +214,9 @@ enum btrace_error
/* Return a string representation of FORMAT. */
extern const char *btrace_format_string (enum btrace_format format);
+/* Return an abbreviation string representation of FORMAT. */
+extern const char *btrace_format_short_string (enum btrace_format format);
+
/* Initialize DATA. */
extern void btrace_data_init (struct btrace_data *data);
diff --git a/gdb/doc/ChangeLog b/gdb/doc/ChangeLog
index 9ed044b..8ef6cba 100644
--- a/gdb/doc/ChangeLog
+++ b/gdb/doc/ChangeLog
@@ -1,3 +1,10 @@
+2016-06-06 Simon Marchi <simon.marchi@ericsson.com>
+
+ * gdb.texinfo (GDB/MI Async Records): Document method and
+ format fields in =record-started.
+ * observer.texi (record_changed): Add method and format
+ parameters.
+
2016-05-27 Eli Zaretskii <eliz@gnu.org>
* gdb.texinfo (General Query Packets): Move the description of the
diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
index 7e89003..1da81a1 100644
--- a/gdb/doc/gdb.texinfo
+++ b/gdb/doc/gdb.texinfo
@@ -26423,12 +26423,17 @@ breakpoint commands; @xref{GDB/MI Breakpoint Commands}. The
Note that if a breakpoint is emitted in the result record of a
command, then it will not also be emitted in an async record.
-@item =record-started,thread-group="@var{id}"
+@item =record-started,thread-group="@var{id}",method="@var{method}"[,format="@var{format}"]
@itemx =record-stopped,thread-group="@var{id}"
Execution log recording was either started or stopped on an
inferior. The @var{id} is the @value{GDBN} identifier of the thread
group corresponding to the affected inferior.
+The @var{method} field indicates the method used to record execution. If the
+method in use supports multiple recording formats, @var{format} will be present
+and contain the currently used format. @xref{Process Record and Replay}
+for existing method and format values.
+
@item =cmd-param-changed,param=@var{param},value=@var{value}
Reports that a parameter of the command @code{set @var{param}} is
changed to @var{value}. In the multi-word @code{set} command,
diff --git a/gdb/doc/observer.texi b/gdb/doc/observer.texi
index f4049ad..fc7aac4 100644
--- a/gdb/doc/observer.texi
+++ b/gdb/doc/observer.texi
@@ -141,11 +141,16 @@ at the entry-point instruction. For @samp{attach} and @samp{core},
inferior, and before any information on the inferior has been printed.
@end deftypefun
-@deftypefun void record_changed (struct inferior *@var{inferior}, int @var{started})
+@deftypefun void record_changed (struct inferior *@var{inferior}, int @var{started}, const char *@var{method}, const char *@var{format})
The status of process record for inferior @var{inferior} in
@value{GDBN} has changed. The process record is started if
@var{started} is true, and the process record is stopped if
@var{started} is false.
+
+When @var{started} is true, @var{method} indicates the short name of the method
+used for recording. If the method supports multiple formats, @var{format}
+indicates which one is being used, otherwise it is NULL. When @var{started} is
+false, they are both NULL.
@end deftypefun
@deftypefun void solib_loaded (struct so_list *@var{solib})
diff --git a/gdb/mi/mi-interp.c b/gdb/mi/mi-interp.c
index 0fe19af..8ce816c 100644
--- a/gdb/mi/mi-interp.c
+++ b/gdb/mi/mi-interp.c
@@ -65,7 +65,8 @@ static void mi_on_no_history (void);
static void mi_new_thread (struct thread_info *t);
static void mi_thread_exit (struct thread_info *t, int silent);
-static void mi_record_changed (struct inferior*, int);
+static void mi_record_changed (struct inferior*, int, const char *,
+ const char *);
static void mi_inferior_added (struct inferior *inf);
static void mi_inferior_appeared (struct inferior *inf);
static void mi_inferior_exit (struct inferior *inf);
@@ -399,7 +400,8 @@ mi_thread_exit (struct thread_info *t, int silent)
/* Emit notification on changing the state of record. */
static void
-mi_record_changed (struct inferior *inferior, int started)
+mi_record_changed (struct inferior *inferior, int started, const char *method,
+ const char *format)
{
struct mi_interp *mi = (struct mi_interp *) top_level_interpreter_data ();
struct cleanup *old_chain;
@@ -407,8 +409,23 @@ mi_record_changed (struct inferior *inferior, int started)
old_chain = make_cleanup_restore_target_terminal ();
target_terminal_ours_for_output ();
- fprintf_unfiltered (mi->event_channel, "record-%s,thread-group=\"i%d\"",
- started ? "started" : "stopped", inferior->num);
+ if (started)
+ {
+ if (format != NULL)
+ fprintf_unfiltered (
+ mi->event_channel,
+ "record-started,thread-group=\"i%d\",method=\"%s\",format=\"%s\"",
+ inferior->num, method, format);
+ else
+ fprintf_unfiltered (
+ mi->event_channel,
+ "record-started,thread-group=\"i%d\",method=\"%s\"",
+ inferior->num, method);
+ }
+ else
+ fprintf_unfiltered (mi->event_channel,
+ "record-stopped,thread-group=\"i%d\"", inferior->num);
+
gdb_flush (mi->event_channel);
diff --git a/gdb/record-btrace.c b/gdb/record-btrace.c
index 77b5180..24594a9 100644
--- a/gdb/record-btrace.c
+++ b/gdb/record-btrace.c
@@ -206,6 +206,7 @@ record_btrace_open (const char *args, int from_tty)
{
struct cleanup *disable_chain;
struct thread_info *tp;
+ const char *format;
DEBUG ("open");
@@ -234,7 +235,8 @@ record_btrace_open (const char *args, int from_tty)
NULL);
record_btrace_generating_corefile = 0;
- observer_notify_record_changed (current_inferior (), 1);
+ format = btrace_format_short_string (record_btrace_conf.format);
+ observer_notify_record_changed (current_inferior (), 1, "btrace", format);
discard_cleanups (disable_chain);
}
diff --git a/gdb/record-full.c b/gdb/record-full.c
index f307b48..0f61bcb 100644
--- a/gdb/record-full.c
+++ b/gdb/record-full.c
@@ -869,7 +869,7 @@ record_full_open (const char *name, int from_tty)
record_full_init_record_breakpoints ();
- observer_notify_record_changed (current_inferior (), 1);
+ observer_notify_record_changed (current_inferior (), 1, "full", NULL);
}
/* "to_close" target method. Close the process record target. */
diff --git a/gdb/record.c b/gdb/record.c
index 6190794..1af134f 100644
--- a/gdb/record.c
+++ b/gdb/record.c
@@ -268,7 +268,7 @@ cmd_record_stop (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);
+ observer_notify_record_changed (current_inferior (), 0, NULL, NULL);
}
/* The "set record" command. */
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index 3b305a6..98a798b 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2016-06-06 Simon Marchi <simon.marchi@ericsson.com>
+
+ * gdb.mi/mi-record-changed.exp: Adjust =record-started output
+ matching.
+
2016-06-02 Tom Tromey <tom@tromey.com>
PR python/18984:
diff --git a/gdb/testsuite/gdb.mi/mi-record-changed.exp b/gdb/testsuite/gdb.mi/mi-record-changed.exp
index 2b5fcd6..22cf076 100644
--- a/gdb/testsuite/gdb.mi/mi-record-changed.exp
+++ b/gdb/testsuite/gdb.mi/mi-record-changed.exp
@@ -31,14 +31,14 @@ if [mi_gdb_start] {
}
mi_run_to_main
-mi_gdb_test "record" ".*=record-started,thread-group=\"i${decimal}\".*\\^done" \
+mi_gdb_test "record" ".*=record-started,thread-group=\"i${decimal}\",method=\"full\".*\\^done" \
"record"
mi_gdb_test "record stop" \
".*=record-stopped,thread-group=\"i${decimal}\".*\\^done" \
"record end"
mi_gdb_test "target record" \
- ".*=record-started,thread-group=\"i${decimal}\".*\\^done" \
+ ".*=record-started,thread-group=\"i${decimal}\",method=\"full\".*\\^done" \
"target record"
return 0