summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFrank Ch. Eigler <fche@elastic.org>2008-04-24 17:43:57 -0400
committerFrank Ch. Eigler <fche@elastic.org>2008-04-24 17:43:57 -0400
commit7fb2f650af7b6a60fc9073cd215e8173ab2afba6 (patch)
treef7a1cea15c24bd225ba916750a43abd30cb81161
parentef2ac8240b1e6f018c8f335f548f8dbb294ecebf (diff)
downloadsystemtap-steved-7fb2f650af7b6a60fc9073cd215e8173ab2afba6.tar.gz
systemtap-steved-7fb2f650af7b6a60fc9073cd215e8173ab2afba6.tar.xz
systemtap-steved-7fb2f650af7b6a60fc9073cd215e8173ab2afba6.zip
PR6454: fix "stap -l" listing of space-laden probe point names
-rw-r--r--ChangeLog7
-rw-r--r--main.cxx20
2 files changed, 19 insertions, 8 deletions
diff --git a/ChangeLog b/ChangeLog
index e62d2891..7a8fa788 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2008-04-24 Frank Ch. Eigler <fche@elastic.org>
+
+ PR 6454.
+ * main.cxx (printscript): Avoid string truncation heuristics, and
+ also avoid plain probe::printsig. Hold nose and dig down into
+ raw location lists instead.
+
2008-04-24 Will Cohen <wcohen@redhat.com>
* aclocal.m4: Regenerated.
diff --git a/main.cxx b/main.cxx
index 03021d8c..15016435 100644
--- a/main.cxx
+++ b/main.cxx
@@ -140,14 +140,18 @@ printscript(systemtap_session& s, ostream& o)
#endif
stringstream tmps;
- second->printsig (tmps);
- string tmp = tmps.str();
- // trim anything other than the "head" of the probe point signature:
- // alias1 *CUT* = exp1, exp2
- // probe1 *CUT* /* pc=0xdeadbeef */ /* <- foo */
- string::size_type space_pos = tmp.find(' ');
- assert (space_pos != string::npos);
- string pp = tmp.substr (0, space_pos);
+ const probe_alias *a = second->get_alias();
+ if (a)
+ {
+ assert (a->alias_names.size() >= 1);
+ a->alias_names[0]->print(tmps); // XXX: [0] is arbitrary; perhaps print all
+ }
+ else
+ {
+ assert (second->locations.size() >= 1);
+ second->locations[0]->print(tmps); // XXX: [0] is less arbitrary here, but still ...
+ }
+ string pp = tmps.str();
// Now duplicate-eliminate. An alias may have expanded to
// several actual derived probe points, but we only want to