Skip to content

Commit

Permalink
perf annotate: Make output more readable
Browse files Browse the repository at this point in the history
This patch adds two new options to perf annotate:
	- --no-asm-raw : Do not display raw instruction encodings
	- --no-source  : Do not interleave source code with assembly code

We believe those options make the output of annotate more readable.

Systematically displaying source can make it hard to follow code and
especially optimized code.

Raw encodings are not useful in most cases.

Cc: Ingo Molnar <mingo@elte.hu>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: http://lkml.kernel.org/r/20110517153207.GA9834@quad
Signed-off-by: Stephane Eranian <eranian@google.com>
[committer note: Use the 'no-' option inverting logic]
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
  • Loading branch information
Stephane Eranian authored and Arnaldo Carvalho de Melo committed Aug 18, 2011
1 parent 18e5a45 commit 3e6a2a7
Show file tree
Hide file tree
Showing 5 changed files with 21 additions and 2 deletions.
8 changes: 8 additions & 0 deletions tools/perf/Documentation/perf-annotate.txt
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,14 @@ OPTIONS
CPUs are specified with -: 0-2. Default is to report samples on all
CPUs.

--asm-raw::
Show raw instruction encoding of assembly instructions. They
are displayed by default, disable with --no-asm-raw.

--source::
Interleave source code with assembly code. Enabled by default,
disable with --no-source.

SEE ALSO
--------
linkperf:perf-record[1], linkperf:perf-report[1]
4 changes: 4 additions & 0 deletions tools/perf/builtin-annotate.c
Original file line number Diff line number Diff line change
Expand Up @@ -267,6 +267,10 @@ static const struct option options[] = {
OPT_BOOLEAN('P', "full-paths", &full_paths,
"Don't shorten the displayed pathnames"),
OPT_STRING('c', "cpu", &cpu_list, "cpu", "list of cpus to profile"),
OPT_BOOLEAN('0', "source", &symbol_conf.annotate_src,
"Interleave source code with assembly code (default)"),
OPT_BOOLEAN('0', "asm-raw", &symbol_conf.annotate_asm_raw,
"Display raw encoding of assembly instructions (default)"),
OPT_END()
};

Expand Down
5 changes: 4 additions & 1 deletion tools/perf/util/annotate.c
Original file line number Diff line number Diff line change
Expand Up @@ -324,9 +324,12 @@ int symbol__annotate(struct symbol *sym, struct map *map, size_t privsize)

snprintf(command, sizeof(command),
"objdump --start-address=0x%016" PRIx64
" --stop-address=0x%016" PRIx64 " -dS -C %s|grep -v %s|expand",
" --stop-address=0x%016" PRIx64
" -d %s %s -C %s|grep -v %s|expand",
map__rip_2objdump(map, sym->start),
map__rip_2objdump(map, sym->end),
symbol_conf.annotate_asm_raw ? "" : "--no-show-raw",
symbol_conf.annotate_src ? "-S" : "",
symfs_filename, filename);

pr_debug("Executing: %s\n", command);
Expand Down
2 changes: 2 additions & 0 deletions tools/perf/util/symbol.c
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,8 @@ struct symbol_conf symbol_conf = {
.exclude_other = true,
.use_modules = true,
.try_vmlinux_path = true,
.annotate_asm_raw = true,
.annotate_src = true,
.symfs = "",
};

Expand Down
4 changes: 3 additions & 1 deletion tools/perf/util/symbol.h
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,9 @@ struct symbol_conf {
exclude_other,
show_cpu_utilization,
initialized,
kptr_restrict;
kptr_restrict,
annotate_asm_raw,
annotate_src;
const char *vmlinux_name,
*kallsyms_name,
*source_prefix,
Expand Down

0 comments on commit 3e6a2a7

Please sign in to comment.