aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArnaldo Carvalho de Melo <acme@redhat.com>2012-05-07 17:57:02 -0400
committerArnaldo Carvalho de Melo <acme@redhat.com>2012-05-07 18:00:42 -0400
commitb9818e93759c30c8942391f4f5fadaa36659ee33 (patch)
treed1de3c2c7ff971b7ae810c0733d7df775beb21af
parent5417072bf6b17eaa31f21f12906f381f148b5200 (diff)
perf annotate browser: Compact 'nop' output
Just suppress the nop operands, future infrastructure that will record the instruction lenght (and its contents) in struct ins will allow rendering them as nopN, i.e. nop5 for a 5-byte nop. Suggested-by: Linus Torvalds <torvalds@linux-foundation.org> Cc: David Ahern <dsahern@gmail.com> Cc: Frederic Weisbecker <fweisbec@gmail.com> Cc: Mike Galbraith <efault@gmx.de> Cc: Namhyung Kim <namhyung@gmail.com> Cc: Paul Mackerras <paulus@samba.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Stephane Eranian <eranian@google.com> Link: http://lkml.kernel.org/n/tip-qddbeglfzqdlal8vj2yaj67y@git.kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
-rw-r--r--tools/perf/util/annotate.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/tools/perf/util/annotate.c b/tools/perf/util/annotate.c
index 0905db4390c..6b4146b40a2 100644
--- a/tools/perf/util/annotate.c
+++ b/tools/perf/util/annotate.c
@@ -113,6 +113,16 @@ bool ins__is_jump(const struct ins *ins)
113 return ins->ops == &jump_ops; 113 return ins->ops == &jump_ops;
114} 114}
115 115
116static int nop__scnprintf(struct ins *ins __used, char *bf, size_t size,
117 struct ins_operands *ops __used)
118{
119 return scnprintf(bf, size, "%-6.6s", "nop");
120}
121
122static struct ins_ops nop_ops = {
123 .scnprintf = nop__scnprintf,
124};
125
116/* 126/*
117 * Must be sorted by name! 127 * Must be sorted by name!
118 */ 128 */
@@ -154,6 +164,9 @@ static struct ins instructions[] = {
154 { .name = "jrcxz", .ops = &jump_ops, }, 164 { .name = "jrcxz", .ops = &jump_ops, },
155 { .name = "js", .ops = &jump_ops, }, 165 { .name = "js", .ops = &jump_ops, },
156 { .name = "jz", .ops = &jump_ops, }, 166 { .name = "jz", .ops = &jump_ops, },
167 { .name = "nop", .ops = &nop_ops, },
168 { .name = "nopl", .ops = &nop_ops, },
169 { .name = "nopw", .ops = &nop_ops, },
157}; 170};
158 171
159static int ins__cmp(const void *name, const void *insp) 172static int ins__cmp(const void *name, const void *insp)