From 7fb2f650af7b6a60fc9073cd215e8173ab2afba6 Mon Sep 17 00:00:00 2001 From: "Frank Ch. Eigler" Date: Thu, 24 Apr 2008 17:43:57 -0400 Subject: PR6454: fix "stap -l" listing of space-laden probe point names --- ChangeLog | 7 +++++++ main.cxx | 20 ++++++++++++-------- 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 + + 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 * 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 -- cgit