Commit-ID:  e50243bbeb528e92e31e03e560b557737c9def3c
Gitweb:     http://git.kernel.org/tip/e50243bbeb528e92e31e03e560b557737c9def3c
Author:     Masami Hiramatsu <[email protected]>
AuthorDate: Fri, 26 Aug 2016 23:57:58 +0900
Committer:  Arnaldo Carvalho de Melo <[email protected]>
CommitDate: Thu, 1 Sep 2016 12:42:22 -0300

perf probe: Ignore vmlinux Build-id when offline vmlinux given

Ignore vmlinux build-id when user gives offline vmlinux if the command
does not affect running kernel.

perf-probe has several actions some of them does not change the running
kernel, like --lines, --vars, and --funcs.

e.g.
  -----
  $ ./perf probe -k ./vmlinux-arm -V do_sys_open:14
  Available variables at do_sys_open:14
          @<do_sys_open+202>
                  char*   filename
                  int     dfd
                  int     fd
                  int     flags
                  struct filename*        tmp
                  struct open_flags       op
                  umode_t mode
  -----

Signed-off-by: Masami Hiramatsu <[email protected]>
Cc: Jiri Olsa <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Link: 
http://lkml.kernel.org/r/147222347320.5088.2582658035296667520.stgit@devbox
Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
---
 tools/perf/builtin-probe.c | 15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)

diff --git a/tools/perf/builtin-probe.c b/tools/perf/builtin-probe.c
index b4220cd..f87996b 100644
--- a/tools/perf/builtin-probe.c
+++ b/tools/perf/builtin-probe.c
@@ -611,6 +611,14 @@ __cmd_probe(int argc, const char **argv, const char 
*prefix __maybe_unused)
         */
        symbol_conf.try_vmlinux_path = (symbol_conf.vmlinux_name == NULL);
 
+       /*
+        * Except for --list, --del and --add, other command doesn't depend
+        * nor change running kernel. So if user gives offline vmlinux,
+        * ignore its buildid.
+        */
+       if (!strchr("lda", params.command) && symbol_conf.vmlinux_name)
+               symbol_conf.ignore_vmlinux_buildid = true;
+
        switch (params.command) {
        case 'l':
                if (params.uprobes) {
@@ -655,13 +663,6 @@ __cmd_probe(int argc, const char **argv, const char 
*prefix __maybe_unused)
                }
                break;
        case 'D':
-               /*
-                * If user gives offline vmlinux, ignore buildid, since
-                * --definition doesn't change running kernel.
-                */
-               if (symbol_conf.vmlinux_name)
-                       symbol_conf.ignore_vmlinux_buildid = true;
-               /* fall through */
        case 'a':
 
                /* Ensure the last given target is used */

Reply via email to