From a6dde7d1fa0df508b555e1cf35b28ee6aa58abf1 Mon Sep 17 00:00:00 2001 From: Justin Seyster Date: Thu, 17 Feb 2011 17:34:42 -0500 Subject: [PATCH] Tracecut reports print out param vals. --- src/tracecut-advice.c | 38 ++++++++++++++++++++++++++++++++++---- 1 file changed, 34 insertions(+), 4 deletions(-) diff --git a/src/tracecut-advice.c b/src/tracecut-advice.c index 6519f03..66b4fed 100644 --- a/src/tracecut-advice.c +++ b/src/tracecut-advice.c @@ -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 -- 2.34.1