summaryrefslogtreecommitdiffstats
path: root/tapsets.cxx
diff options
context:
space:
mode:
authorDave Brolley <brolley@redhat.com>2009-03-31 12:21:26 -0400
committerDave Brolley <brolley@redhat.com>2009-03-31 12:21:26 -0400
commitdff5b6a2d7a63b4554d1320c0603dc8757b9c8a7 (patch)
treecd139bae97c71558ccabdc3f69471d8e6a35049b /tapsets.cxx
parent8f2b14197e7db279434c5b063b755d1121c137de (diff)
parentc5746f91b1ba8f374b4230e16cb33e1b9206ca2b (diff)
downloadsystemtap-steved-dff5b6a2d7a63b4554d1320c0603dc8757b9c8a7.tar.gz
systemtap-steved-dff5b6a2d7a63b4554d1320c0603dc8757b9c8a7.tar.xz
systemtap-steved-dff5b6a2d7a63b4554d1320c0603dc8757b9c8a7.zip
Merge branch 'master' of git://sources.redhat.com/git/systemtap
Diffstat (limited to 'tapsets.cxx')
-rw-r--r--tapsets.cxx15
1 files changed, 14 insertions, 1 deletions
diff --git a/tapsets.cxx b/tapsets.cxx
index 690d7e28..50ee563a 100644
--- a/tapsets.cxx
+++ b/tapsets.cxx
@@ -5806,16 +5806,29 @@ dwarf_builder::build(systemtap_session & sess,
probe_arg = *((__uint64_t*)((char*)pdata->d_buf + probe_scn_offset));
if (probe_scn_offset % (sizeof(__uint64_t)*2))
probe_scn_offset = (probe_scn_offset + sizeof(__uint64_t)*2) - (probe_scn_offset % (sizeof(__uint64_t)*2));
- if (strcmp (location->components[1]->arg->tok->content.c_str(), probe_name.c_str()) != 0)
+ if ((strcmp (location->components[1]->arg->tok->content.c_str(),
+ probe_name.c_str()) == 0)
+ || (dw->name_has_wildcard (location->components[1]->arg->tok->content.c_str())
+ && dw->function_name_matches_pattern
+ (probe_name.c_str(),
+ location->components[1]->arg->tok->content.c_str())))
+ ;
+ else
continue;
const token* sv_tok = location->components[1]->arg->tok;
location->components[1]->functor = TOK_STATEMENT;
location->components[1]->arg = new literal_number((int)probe_arg);
location->components[1]->arg->tok = sv_tok;
((literal_map_t&)parameters)[TOK_STATEMENT] = location->components[1]->arg;
+
dwarf_query q(sess, base, location, *dw, parameters, finished_results);
q.has_mark = true;
dw->query_modules(&q);
+ if (sess.listing_mode)
+ {
+ finished_results.back()->locations[0]->components[1]->functor = TOK_MARK;
+ finished_results.back()->locations[0]->components[1]->arg = new literal_string (probe_name.c_str());
+ }
}
return;
}