[PATCH] Extend tsave: save start time, stop time, user and notes

Dmitry Kozlov dmitry_kozlov@mentor.com
Thu Oct 11 15:53:00 GMT 2012


Hi Yao,
I have added xfree to this patch also. Please se attached patch.

Thank you,
Dmitry

On 10/08/2012 04:47 PM, Yao Qi wrote:
> On 10/03/2012 10:09 PM, Dmitry Kozlov wrote:
>
> In general, I think it is useful to include these attributes in 
> tracefile saved by command 'tsave'.
>
>> 2012-10-03  Dmitry Kozlov<ddk@mentor.com>
>>
>>     * tracepoint.c (trace_save): Add saving starttime, stoptime, user 
>> and notes.
>>
>> diff --git a/gdb/tracepoint.c b/gdb/tracepoint.c
>> index 0f94150..f7e96eb 100644
>> --- a/gdb/tracepoint.c
>> +++ b/gdb/tracepoint.c
>> @@ -3036,6 +3036,24 @@ trace_save (const char *filename, int 
>> target_does_save)
>>       fprintf (fp, ";disconn:%x", ts->disconnected_tracing);
>>     if (ts->circular_buffer)
>>       fprintf (fp, ";circular:%x", ts->circular_buffer);
>> +  if (ts->start_time)
>> +    fprintf (fp, ";starttime:%ld%06ld", (long int) (ts->start_time / 
>> 1000000), (long int) (ts->start_time % 1000000));
>
> This line is too long...
>
>> +  if (ts->stop_time)
>> +    fprintf (fp, ";stoptime:%ld%06ld", (long int) (ts->stop_time / 
>> 1000000), (long int) (ts->stop_time % 1000000));
>
> and this line.
>
>> +  if (ts->notes)
>
> ts->notes will never be NULL, because GDBserver will always send 
> "notes:" in qTStatus packet (See gdbserver/tracepoint.c:cmd_qtstatus), 
> but other stubs may don't include "notes:" in qTStatus packet, so  we 
> may do the check here like this,
>
>    if (ts->notes && ts->notes[0] != 0)
>
>> +  {
>> +    char *buf = (char *) alloca (strlen (ts->notes) * 2 + 1);
>
> We need a blank line here.  Looks 'alloca' is not encouraged to use, 
> and it should be replaced with xmalloc/xfree.
>
>   [PATCH] Replace potentially unsafe alloca with xmalloc/xfree in 
> value_concat
>   http://sourceware.org/ml/gdb-patches/2012-09/msg00274.html
>
>> +    bin2hex ((gdb_byte *) ts->notes, buf, 0);
>> +    fprintf (fp, ";notes:%s", buf);
>> +
>> +  }
>> +  if (ts->user_name)
>> +  {
>> +    char *buf = (char *) alloca (strlen (ts->user_name) * 2 + 1);
>
> Likewise.
>
>> +    bin2hex ((gdb_byte *) ts->user_name, buf, 0);
>> +    fprintf (fp, ";username:%s", buf);
>> +
>> +  }
>>     fprintf (fp, "\n");
>>
>>     /* Note that we want to upload tracepoints and save those, rather
>
> Logically, this patch depends on your previous patch
>
>   PATCH fix start-time and stop-time in trace-status
>   http://sourceware.org/ml/gdb-patches/2012-09/msg00621.html
>
> otherwise, we generate start-time and stop-time in trace file in 
> decimal format, while gdb still interprets it as hex.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: gdb_tsave_v3.diff
Type: text/x-patch
Size: 2424 bytes
Desc: not available
URL: <http://sourceware.org/pipermail/gdb-patches/attachments/20121011/0ad9adda/attachment.bin>


More information about the Gdb-patches mailing list