Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Hui Zhu <teawater@gmail.com>
To: Stan Shebs <stanshebs@earthlink.net>
Cc: gdb-patches@sourceware.org
Subject: Re: [PATCH]tracepoint.c: Add conditionals num to find_matching_tracepoint
Date: Wed, 24 Aug 2011 09:30:00 -0000	[thread overview]
Message-ID: <CANFwon0itKYcz3ESKMmdznEzEYQuy+J+a7j5d4YXeDoqXF0qjA@mail.gmail.com> (raw)
In-Reply-To: <4E54369C.9000706@earthlink.net>

On Wed, Aug 24, 2011 at 07:24, Stan Shebs <stanshebs@earthlink.net> wrote:
> On 8/14/11 6:40 AM, Hui Zhu wrote:
>>
>> [...]
>> Hi Stan,
>>
>> Thanks for your review.
>>
>> I make a new patch that check the condition according to your mail.
>>
>> Best,
>> Hui
>>
>> 2011-08-14  Hui Zhu<teawater@gmail.com>
>>
>>        * tracepoint.c (cond_string_is_same): New function.
>>        (find_matching_tracepoint): Add condition check
>>        by cond_string_is_same.
>> ---
>>  tracepoint.c |   19 ++++++++++++++++++-
>>  1 file changed, 18 insertions(+), 1 deletion(-)
>>
>> --- a/tracepoint.c
>> +++ b/tracepoint.c
>> @@ -3091,6 +3091,22 @@ free_uploaded_tsvs (struct uploaded_tsv
>>      }
>>  }
>>
>> +static int
>> +cond_string_is_same(char *str1, char *str2)
>
> Don't forget the all-important space! :-)

Sorry for forgot it.

>
>> +{
>> +  if (str1 == NULL || str2 == NULL)
>> +    {
>> +      if (str1 == str2)
>> +       return 1;
>> +      else
>> +       return 0;
>
> This bit is a little simpler as just "return (str1 == str2);"

My code is so ugly.  Thanks for help me make it more better.  :)

>
>> +    }
>> +  if (strcmp (str1, str2))
>> +    return 0;
>> +
>> +  return 1;
>
> Typically, I would write this as "return (strcmp (str1, str2) == 0);"
>
> It would also be good to add a function header comment that this function is
> heuristic and will miss the cases where the conditional is semantically
> identical but differs in whitespace, such as "x == 0" vs "x==0" - but that's
> generally OK, because it just results in an extra tracepoint that is easily
> deleted.

That is really a issue for us.   I add a comment for it.  Wish I can
get some time to make it better.

>
> OK to install with these changes, and thanks!

I made a new patch according to your patch and checked it in.

Thanks for your help.

Best,
Hui

>
> Stan
> stan@codesourcery.com
>
>> +}
>> +
>>  /* Look for an existing tracepoint that seems similar enough to the
>>     uploaded one.  Enablement isn't compared, because the user can
>>     toggle that freely, and may have done so in anticipation of the
>> @@ -3111,7 +3127,8 @@ find_matching_tracepoint (struct uploade
>>        if (b->type == utp->type
>>        &&  t->step_count == utp->step
>>        &&  t->pass_count == utp->pass
>> -         /* FIXME also test conditionals and actions.  */
>> +       &&  cond_string_is_same (t->base.cond_string, utp->cond_string)
>> +         /* FIXME also test actions.  */
>>          )
>>        {
>>          /* Scan the locations for an address match.  */
>>
>
>

http://sourceware.org/cgi-bin/cvsweb.cgi/src/gdb/tracepoint.c.diff?cvsroot=src&r1=1.230&r2=1.231

2011-08-24  Hui Zhu  <teawater@gmail.com>

	* tracepoint.c (cond_string_is_same): New function.
	(find_matching_tracepoint): Add condition check
	by cond_string_is_same.
===================================================================
RCS file: /cvs/src/src/gdb/tracepoint.c,v
retrieving revision 1.230
retrieving revision 1.231
diff -u -r1.230 -r1.231
--- src/gdb/tracepoint.c	2011/08/04 19:10:13	1.230
+++ src/gdb/tracepoint.c	2011/08/24 09:24:10	1.231
@@ -3091,6 +3091,19 @@
     }
 }

+/* FIXME this function is heuristic and will miss the cases where the
+   conditional is semantically identical but differs in whitespace,
+   such as "x == 0" vs "x==0".  */
+
+static int
+cond_string_is_same (char *str1, char *str2)
+{
+  if (str1 == NULL || str2 == NULL)
+    return (str1 == str2);
+
+  return (strcmp (str1, str2) == 0);
+}
+
 /* Look for an existing tracepoint that seems similar enough to the
    uploaded one.  Enablement isn't compared, because the user can
    toggle that freely, and may have done so in anticipation of the
@@ -3111,7 +3124,8 @@
       if (b->type == utp->type
 	  && t->step_count == utp->step
 	  && t->pass_count == utp->pass
-	  /* FIXME also test conditionals and actions.  */
+	  && cond_string_is_same (t->base.cond_string, utp->cond_string)
+	  /* FIXME also test actions.  */
 	  )
 	{
 	  /* Scan the locations for an address match.  */


      reply	other threads:[~2011-08-24  9:30 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-08-07 16:30 Hui Zhu
2011-08-08 23:02 ` Stan Shebs
2011-08-14 13:41   ` Hui Zhu
2011-08-16  9:28     ` Hui Zhu
2011-08-23  8:53     ` Hui Zhu
2011-08-23 23:24     ` Stan Shebs
2011-08-24  9:30       ` Hui Zhu [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CANFwon0itKYcz3ESKMmdznEzEYQuy+J+a7j5d4YXeDoqXF0qjA@mail.gmail.com \
    --to=teawater@gmail.com \
    --cc=gdb-patches@sourceware.org \
    --cc=stanshebs@earthlink.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox