diff options
author | Franck Bui-Huu <fbuihuu@gmail.com> | 2010-12-23 10:04:23 -0500 |
---|---|---|
committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2010-12-27 16:48:21 -0500 |
commit | 32ae2ade462146729580117d9886cc9efd83dfbe (patch) | |
tree | 5fe588212404ceb31ca829c275030104e7346b76 /tools/perf | |
parent | ce0ac9e1851364fa67c991659ce1db05ab82c6ae (diff) |
perf probe: Fix short file name probe location reporting
After adding probes, perf-probe(1) reports the probes locations which include
filenames for certain cases.
But for short file names (whose length < 32), perf-probe didn't display the
name correctly. It actually skipped the first character.
Here's an example where 'icmp.c' was screwed:
$ perf probe -n -a "icmp.c;sk=*"
Add new events:
probe:icmp_push_reply (on @cmp.c)
probe:icmp_reply (on @cmp.c)
probe:icmp_reply_1 (on @cmp.c)
probe:icmp_send (on @cmp.c)
probe:icmp_send_1 (on @cmp.c)
probe:icmp_error (on @cmp.c)
probe:icmp_error_1 (on @cmp.c)
probe:icmp_error_2 (on @cmp.c)
probe:icmp_error_3 (on @cmp.c)
This patch fixes this bug in synthesize_perf_probe_point().
Acked-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Cc: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
LKML-Reference: <m31v588r9k.fsf@gmail.com>
Signed-off-by: Franck Bui-Huu <fbuihuu@gmail.com>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools/perf')
-rw-r--r-- | tools/perf/util/probe-event.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/tools/perf/util/probe-event.c b/tools/perf/util/probe-event.c index 4bde988a0b04..d3af30d62880 100644 --- a/tools/perf/util/probe-event.c +++ b/tools/perf/util/probe-event.c | |||
@@ -1068,13 +1068,13 @@ static char *synthesize_perf_probe_point(struct perf_probe_point *pp) | |||
1068 | goto error; | 1068 | goto error; |
1069 | } | 1069 | } |
1070 | if (pp->file) { | 1070 | if (pp->file) { |
1071 | len = strlen(pp->file) - 31; | 1071 | tmp = pp->file; |
1072 | if (len < 0) | 1072 | len = strlen(tmp); |
1073 | len = 0; | 1073 | if (len > 30) { |
1074 | tmp = strchr(pp->file + len, '/'); | 1074 | tmp = strchr(pp->file + len - 30, '/'); |
1075 | if (!tmp) | 1075 | tmp = tmp ? tmp + 1 : pp->file + len - 30; |
1076 | tmp = pp->file + len; | 1076 | } |
1077 | ret = e_snprintf(file, 32, "@%s", tmp + 1); | 1077 | ret = e_snprintf(file, 32, "@%s", tmp); |
1078 | if (ret <= 0) | 1078 | if (ret <= 0) |
1079 | goto error; | 1079 | goto error; |
1080 | } | 1080 | } |