This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [PATCH] Add method/format information to =record-started
- From: Simon Marchi <simon dot marchi at ericsson dot com>
- To: "Metzger, Markus T" <markus dot t dot metzger at intel dot com>, "gdb-patches at sourceware dot org" <gdb-patches at sourceware dot org>
- Date: Mon, 6 Jun 2016 09:06:57 -0400
- Subject: Re: [PATCH] Add method/format information to =record-started
- Authentication-results: sourceware.org; auth=none
- References: <20160603155220 dot 22286-1-simon dot marchi at ericsson dot com> <A78C989F6D9628469189715575E55B23332EAEF5 at IRSMSX104 dot ger dot corp dot intel dot com>
On 16-06-06 02:37 AM, Metzger, Markus T wrote:
>> @@ -407,8 +409,30 @@ 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)
>> + {
>
> Do we really need braces, here...
Right, thanks.
>> + fprintf_unfiltered (
>> + mi->event_channel,
>> + "record-started,thread-
>> group=\"i%d\",method=\"%s\",format=\"%s\"",
>> + inferior->num, method, format);
>> + }
>> + else
>> + {
>> +
>
> ...and here...
Same.
>> + fprintf_unfiltered (
>> + mi->event_channel,
>> + "record-started,thread-group=\"i%d\",method=\"%s\"",
>> + inferior->num, method);
>> + }
>> + }
>> + else
>> + {
>
> ...and here?
Ditto.
>> + fprintf_unfiltered (mi->event_channel,
>> + "record-stopped,thread-group=\"i%d\"", inferior-
>>> num);
>> + }
>> +
>
>
>> @@ -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 = record_btrace_conf.format == BTRACE_FORMAT_PT ? "pt" : "bts";
>
> I'd use a switch here and not assume that format != pt means bts. If we added
> another format (LBR maybe?) we might miss this.
You're right. What do you think of adding a convenience function like this?
diff --git a/gdb/common/btrace-common.c b/gdb/common/btrace-common.c
index eba3979..ebf3ed2 100644
--- a/gdb/common/btrace-common.c
+++ b/gdb/common/btrace-common.c
@@ -43,6 +43,23 @@ 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_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..ba707a2 100644
--- a/gdb/common/btrace-common.h
+++ b/gdb/common/btrace-common.h
@@ -214,6 +214,10 @@ enum btrace_error
/* Return a string representation of FORMAT. */
extern const char *btrace_format_string (enum btrace_format format);
+/* Return a short abbreviation string of FORMAT. FORMAT can have the value
+ BTRACE_FORMAT_NONE. */
+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/record-btrace.c b/gdb/record-btrace.c
index a1df75a..24594a9 100644
--- a/gdb/record-btrace.c
+++ b/gdb/record-btrace.c
@@ -235,7 +235,7 @@ record_btrace_open (const char *args, int from_tty)
NULL);
record_btrace_generating_corefile = 0;
- format = record_btrace_conf.format == BTRACE_FORMAT_PT ? "pt" : "bts";
+ format = btrace_format_short_string (record_btrace_conf.format);
observer_notify_record_changed (current_inferior (), 1, "btrace", format);
discard_cleanups (disable_chain);