]> git.itanic.dy.fi Git - linux-stable/commitdiff
perf annotate: Pass "-l" option to objdump conditionally
authorNamhyung Kim <namhyung@kernel.org>
Thu, 9 Nov 2023 23:59:20 +0000 (15:59 -0800)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Fri, 10 Nov 2023 12:03:23 +0000 (09:03 -0300)
The "-l" option is to print line numbers in the objdump output.  perf
annotate TUI only can show the line numbers later but it causes big slow
downs for the kernel binary.

Similarly, showing source code also takes a long time and it already has
an option to control it.

  $ time objdump ... -d -S -C vmlinux > /dev/null
  real 0m3.474s
  user 0m3.047s
  sys 0m0.428s

  $ time objdump ... -d -l -C vmlinux > /dev/null
  real 0m1.796s
  user 0m1.459s
  sys 0m0.338s

  $ time objdump ... -d -C vmlinux > /dev/null
  real 0m0.051s
  user 0m0.036s
  sys 0m0.016s

As it's not needed for data type profiling, let's make it conditional so
that it can skip the unnecessary work.

Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Ian Rogers <irogers@google.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Masami Hiramatsu (Google) <mhiramat@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Cc: linux-toolchains@vger.kernel.org
Cc: linux-trace-devel@vger.kernel.org
Link: https://lore.kernel.org/r/20231110000012.3538610-2-namhyung@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/util/annotate.c

index 9b68b8e3791ca8bbc2493fd7e18b24cd9df90450..118195c787b940155dd10ff68bb3b7e2ce4351e9 100644 (file)
@@ -2144,12 +2144,13 @@ static int symbol__disassemble(struct symbol *sym, struct annotate_args *args)
        err = asprintf(&command,
                 "%s %s%s --start-address=0x%016" PRIx64
                 " --stop-address=0x%016" PRIx64
-                " -l -d %s %s %s %c%s%c %s%s -C \"$1\"",
+                " %s -d %s %s %s %c%s%c %s%s -C \"$1\"",
                 opts->objdump_path ?: "objdump",
                 opts->disassembler_style ? "-M " : "",
                 opts->disassembler_style ?: "",
                 map__rip_2objdump(map, sym->start),
                 map__rip_2objdump(map, sym->end),
+                opts->show_linenr ? "-l" : "",
                 opts->show_asm_raw ? "" : "--no-show-raw-insn",
                 opts->annotate_src ? "-S" : "",
                 opts->prefix ? "--prefix " : "",