[tip:perf/core] perf tools: Fix truncated annotation

From: tip-bot for Ingo Molnar
Date: Thu Dec 29 2011 - 15:49:40 EST


Commit-ID: f41612f43be9575e1160460b08c3a760e6e27e1b
Gitweb: http://git.kernel.org/tip/f41612f43be9575e1160460b08c3a760e6e27e1b
Author: Ingo Molnar <mingo@xxxxxxx>
AuthorDate: Fri, 23 Dec 2011 14:08:04 +0100
Committer: Arnaldo Carvalho de Melo <acme@xxxxxxxxxx>
CommitDate: Fri, 23 Dec 2011 16:39:19 -0200

perf tools: Fix truncated annotation

I get such truncated annotation results in 'perf top':

: Disassembly of section .text: â
: â
: ffffffff810966a8 <nr_iowait_cpu>: â
4.94 : ffffffff810966a8: movslq %edi,%rdi â
3.70 : ffffffff810966ab: mov $0x13700,%rax â
0.00 : ffffffff810966b2: add -0x7e32cb00(,%rdi,8),%rax â
8.64 : ffffffff810966ba: mov 0x7e0(%rax),%eax â
82.72 : ffffffff810966c0: cltq â

Note the missing 'retq' which is there in the original function:

ffffffff810966a8 <nr_iowait_cpu>:
ffffffff810966a8: 48 63 ff movslq %edi,%rdi
ffffffff810966ab: 48 c7 c0 00 37 01 00 mov $0x13700,%rax
ffffffff810966b2: 48 03 04 fd 00 35 cd add -0x7e32cb00(,%rdi,8),%rax
ffffffff810966b9: 81
ffffffff810966ba: 8b 80 e0 07 00 00 mov 0x7e0(%rax),%eax
ffffffff810966c0: 48 98 cltq
ffffffff810966c2: c3 retq

ffffffff810966c3 <this_cpu_load>:

I'm using a fairly recent binutils:

GNU objdump version 2.21.51.0.6-2.fc16 20110118

AFAICS the bug is simply that sym->end points to the last byte
of the symbol in question - while objdump's --stop-address
expects the last byte plus 1 to disassemble the full range.

Cc: Peter Zijlstra <a.p.zijlstra@xxxxxxxxx>
Link: http://lkml.kernel.org/r/20111223130804.GA24305@xxxxxxx
Signed-off-by: Ingo Molnar <mingo@xxxxxxx>
Signed-off-by: Arnaldo Carvalho de Melo <acme@xxxxxxxxxx>
---
tools/perf/util/annotate.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/tools/perf/util/annotate.c b/tools/perf/util/annotate.c
index 376e643..011ed26 100644
--- a/tools/perf/util/annotate.c
+++ b/tools/perf/util/annotate.c
@@ -334,7 +334,7 @@ fallback:
disassembler_style ? "-M " : "",
disassembler_style ? disassembler_style : "",
map__rip_2objdump(map, sym->start),
- map__rip_2objdump(map, sym->end),
+ map__rip_2objdump(map, sym->end+1),
symbol_conf.annotate_asm_raw ? "" : "--no-show-raw",
symbol_conf.annotate_src ? "-S" : "",
symfs_filename, filename);
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/