summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorfche <fche>2008-01-25 19:05:46 +0000
committerfche <fche>2008-01-25 19:05:46 +0000
commit1939ea3217ce8b8fae35e4a70f4cd5c1c431e438 (patch)
tree033397a7d7c8399aaf3cb0d339dd0480b8026725
parent7760bbfb5f7060d20c4525827bb74284392cb6e9 (diff)
downloadsystemtap-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--ChangeLog8
-rw-r--r--staptree.cxx8
-rw-r--r--staptree.h1
-rw-r--r--tapsets.cxx2
4 files changed, 18 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 6a2b8c27..3097675e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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)
{
diff --git a/staptree.h b/staptree.h
index 5b4b56cd..54194c7b 100644
--- a/staptree.h
+++ b/staptree.h
@@ -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),