]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
2011-08-24 Hui Zhu <teawater@gmail.com>
authorHui Zhu <teawater@gmail.com>
Wed, 24 Aug 2011 09:24:10 +0000 (09:24 +0000)
committerHui Zhu <teawater@gmail.com>
Wed, 24 Aug 2011 09:24:10 +0000 (09:24 +0000)
* tracepoint.c (cond_string_is_same): New function.
(find_matching_tracepoint): Add condition check
by cond_string_is_same.

gdb/ChangeLog
gdb/tracepoint.c

index eb7b516afda004df408403a9463de5486717f894..5101954d00de776277710d73c4cbdec798fc524e 100644 (file)
@@ -1,3 +1,9 @@
+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.
+
 2011-08-23  Josh Matthews  <josh@joshmatthews.net>
 
        Fix build error in Darwin port.
index 351cbb2b41b5390c62f7df57ce5090dcd8184bab..fc9a17a59cc1f533644c3efeb8abe926a7ffdbd8 100644 (file)
@@ -3091,6 +3091,19 @@ free_uploaded_tsvs (struct uploaded_tsv **utsvp)
     }
 }
 
+/* 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 @@ find_matching_tracepoint (struct uploaded_tp *utp)
       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.  */