diff options
author | fche <fche> | 2008-01-25 19:05:46 +0000 |
---|---|---|
committer | fche <fche> | 2008-01-25 19:05:46 +0000 |
commit | 1939ea3217ce8b8fae35e4a70f4cd5c1c431e438 (patch) | |
tree | 033397a7d7c8399aaf3cb0d339dd0480b8026725 | |
parent | 7760bbfb5f7060d20c4525827bb74284392cb6e9 (diff) | |
download | systemtap-steved-1939ea3217ce8b8fae35e4a70f4cd5c1c431e438.tar.gz systemtap-steved-1939ea3217ce8b8fae35e4a70f4cd5c1c431e438.tar.xz systemtap-steved-1939ea3217ce8b8fae35e4a70f4cd5c1c431e438.zip |
PR 5672: fix generated dwarf probe point names from wildcards
2008-01-25 Frank Ch. Eigler <fche@elastic.org>
PR 5672.
* staptree.cxx (probe_point copy ctor): New function.
* staptree.h: Declare it.
* tapsets.cxx (dwarf_derived_probe ctor): Call it to shallow-copy
incoming base probe location before recomputing/overwriting it.
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | staptree.cxx | 8 | ||||
-rw-r--r-- | staptree.h | 1 | ||||
-rw-r--r-- | tapsets.cxx | 2 |
4 files changed, 18 insertions, 1 deletions
@@ -1,3 +1,11 @@ +2008-01-25 Frank Ch. Eigler <fche@elastic.org> + + PR 5672. + * staptree.cxx (probe_point copy ctor): New function. + * staptree.h: Declare it. + * tapsets.cxx (dwarf_derived_probe ctor): Call it to shallow-copy + incoming base probe location before recomputing/overwriting it. + 2008-01-25 David Smith <dsmith@redhat.com> * configure.ac: Compressed the two perfmon options into one. diff --git a/staptree.cxx b/staptree.cxx index 173314ee..6d001375 100644 --- a/staptree.cxx +++ b/staptree.cxx @@ -82,6 +82,14 @@ probe_point::probe_point (std::vector<component*> const & comps, { } +// NB: shallow-copy of compoonents & condition! +probe_point::probe_point (const probe_point& pp): + components(pp.components), tok(pp.tok), optional (pp.optional), sufficient (pp.sufficient), + condition (pp.condition) +{ +} + + probe_point::probe_point (): tok (0), optional (false), sufficient (false), condition (0) { @@ -577,6 +577,7 @@ struct probe_point expression* condition; void print (std::ostream& o) const; probe_point (); + probe_point(const probe_point& pp); probe_point(std::vector<component*> const & comps,const token * t); std::string str(); }; diff --git a/tapsets.cxx b/tapsets.cxx index 06aa73aa..5b69373b 100644 --- a/tapsets.cxx +++ b/tapsets.cxx @@ -3635,7 +3635,7 @@ dwarf_derived_probe::dwarf_derived_probe(const string& funcname, Dwarf_Addr addr, dwarf_query& q, Dwarf_Die* scope_die /* may be null */) - : derived_probe (q.base_probe, q.base_loc /* NB: base_loc.components will be overwritten */ ), + : derived_probe (q.base_probe, new probe_point(*q.base_loc) /* .components soon rewritten */ ), module (module), section (section), addr (addr), has_return (q.has_return), has_maxactive (q.has_maxactive), |