From 3d6fd22429c0941d7e6bd5e64daa6c4bba56af49 Mon Sep 17 00:00:00 2001 From: Arnaldo Carvalho de Melo Date: Thu, 22 Jul 2010 14:04:13 -0300 Subject: [PATCH] --- yaml --- r: 201181 b: refs/heads/master c: 70a7cb3b39994ff366ff100b46f9dc97b1510c0f h: refs/heads/master i: 201179: c02c6cbe34d3103305e2b6560e0d653a8973b62e v: v3 --- [refs] | 2 +- trunk/tools/perf/util/hist.c | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 2b4ae3b52092..0b873e9bb9f2 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 07fca0e57fca925032526349f4370f97ed580cc9 +refs/heads/master: 70a7cb3b39994ff366ff100b46f9dc97b1510c0f diff --git a/trunk/tools/perf/util/hist.c b/trunk/tools/perf/util/hist.c index 699cf81ea082..784ee0bdda77 100644 --- a/trunk/tools/perf/util/hist.c +++ b/trunk/tools/perf/util/hist.c @@ -976,13 +976,17 @@ static int hist_entry__parse_objdump_line(struct hist_entry *self, FILE *file, * Parse hexa addresses followed by ':' */ line_ip = strtoull(tmp, &tmp2, 16); - if (*tmp2 != ':' || tmp == tmp2) + if (*tmp2 != ':' || tmp == tmp2 || tmp2[1] == '\0') line_ip = -1; } if (line_ip != -1) { - u64 start = map__rip_2objdump(self->ms.map, sym->start); + u64 start = map__rip_2objdump(self->ms.map, sym->start), + end = map__rip_2objdump(self->ms.map, sym->end); + offset = line_ip - start; + if (offset < 0 || (u64)line_ip > end) + offset = -1; } objdump_line = objdump_line__new(offset, line);