perf annotate: Make output more readable
authorStephane Eranian <eranian@google.com>
Tue, 17 May 2011 15:32:07 +0000 (17:32 +0200)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Thu, 18 Aug 2011 10:38:21 +0000 (07:38 -0300)
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>
tools/perf/Documentation/perf-annotate.txt
tools/perf/builtin-annotate.c
tools/perf/util/annotate.c
tools/perf/util/symbol.c
tools/perf/util/symbol.h

index 85c5f026930d336bc6b2d2658087134e11caa328..5bc06001557f625024727f77f75983bd98518759 100644 (file)
@@ -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]
index 555aefd7fe0146eada9b45dfd366f68a6285f854..5015e04b82142e01793cd62825aa657e4b6575b1 100644 (file)
@@ -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()
 };
 
index e01af2b1a469ad94aed67567501b7e6c5fc882bd..01d36ba54053f2aa0ea36013294ed4d18b7f3f24 100644 (file)
@@ -324,9 +324,12 @@ fallback:
 
        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);
index 469c0264ed298d138698d93206419b87fbb3dd99..245e60d6b4e7757209903bf31216a6aa25f84997 100644 (file)
@@ -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            = "",
 };
 
index 4f377d92e75a4c686279c99fa15e200f1ac6d5bc..7733f0b3cd419daa8c68f66ba0930604170d4b87 100644 (file)
@@ -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,