Tracecut reports print out param vals.
authorJustin Seyster <jseyster@cs.sunysb.edu>
Thu, 17 Feb 2011 22:34:42 +0000 (17:34 -0500)
committerJustin Seyster <jseyster@cs.sunysb.edu>
Thu, 17 Feb 2011 22:34:42 +0000 (17:34 -0500)
src/tracecut-advice.c

index 6519f03cff006233c719751eff4085401327883e..66b4fed6ad5b33f7cdc1ee6c29a2d2cb8d163b11 100644 (file)
@@ -18,6 +18,7 @@ struct tracecut {
   int num_rules;
 
   const char **symbol_names;
+  const char **param_names;
   struct NFA **rules;
 
   struct tuple *tuple_list;
@@ -104,7 +105,7 @@ tc_report_match (struct tracecut *tc, struct tuple *tuple, int symbol_index)
 
       fprintf (stderr, "  Param values follow:\n");
       for (i = 0; i < tc->num_params; i++)
-       fprintf (stderr, "  Param %d: 0x%p\n", i,
+       fprintf (stderr, "  Param %s: 0x%p\n", tc->param_names[i],
                 (void *)tuple->param_vals[i].value);
     }
   else
@@ -280,22 +281,38 @@ _tc_new_tracecut (int tc_index, int num_params, int num_symbols, int num_rules)
   if (tc == NULL)
     return;
 
-  tc->num_params = num_params;
   tc->num_symbols = num_symbols;
+  tc->num_params = num_params;
   tc->num_rules = num_rules;
 
   if (num_symbols > 0)
     {
       tc->symbol_names = calloc (num_symbols, sizeof (const char *));
       if (tc->symbol_names == NULL)
-       fatal_tracecut_error ("Out of memory");
+       {
+         fatal_tracecut_error ("Out of memory");
+         return;
+       }
+    }
+
+  if (num_params > 0)
+    {
+      tc->param_names = calloc (num_params, sizeof (const char *));
+      if (tc->param_names == NULL)
+       {
+         fatal_tracecut_error ("Out of memory");
+         return;
+       }
     }
 
   if (num_rules > 0)
     {
       tc->rules = calloc (num_rules, sizeof (struct State *));
       if (tc->rules == NULL)
-       fatal_tracecut_error ("Out of memory");
+       {
+         fatal_tracecut_error ("Out of memory");
+         return;
+       }
     }
 }
 
@@ -320,6 +337,19 @@ _tc_name_symbol (int tc_index, int symbol_index, const char *symbol_name)
 ADVICE_FUNC void
 _tc_name_param (int tc_index, int param_index, const char *param_name)
 {
+  struct tracecut *tc;
+
+  tc = get_tracecut (tc_index);
+  if (tc == NULL)
+    return;
+
+  if (param_index < 0 || param_index >= tc->num_params)
+    {
+      fatal_tracecut_error ("Bad symbol index at initialization.");
+      return;
+    }
+
+  tc->param_names[param_index] = param_name;
 }
 
 ADVICE_FUNC void