diff options
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/ChangeLog | 14 | ||||
-rw-r--r-- | gdb/NEWS | 5 | ||||
-rw-r--r-- | gdb/common/btrace-common.c | 20 | ||||
-rw-r--r-- | gdb/common/btrace-common.h | 3 | ||||
-rw-r--r-- | gdb/doc/ChangeLog | 7 | ||||
-rw-r--r-- | gdb/doc/gdb.texinfo | 7 | ||||
-rw-r--r-- | gdb/doc/observer.texi | 7 | ||||
-rw-r--r-- | gdb/mi/mi-interp.c | 25 | ||||
-rw-r--r-- | gdb/record-btrace.c | 4 | ||||
-rw-r--r-- | gdb/record-full.c | 2 | ||||
-rw-r--r-- | gdb/record.c | 2 | ||||
-rw-r--r-- | gdb/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/testsuite/gdb.mi/mi-record-changed.exp | 4 |
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 @@ -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 |