瀏覽代碼

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 <mhiramat@kernel.org>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: http://lkml.kernel.org/r/147222347320.5088.2582658035296667520.stgit@devbox
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Masami Hiramatsu 9 年之前
父節點
當前提交
e50243bbeb
共有 1 個文件被更改,包括 8 次插入7 次删除
  1. 8 7
      tools/perf/builtin-probe.c

+ 8 - 7
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 */