Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 15eca306 authored by Masami Hiramatsu's avatar Masami Hiramatsu Committed by Arnaldo Carvalho de Melo
Browse files

perf probe: Fix to use symtab only if no debuginfo



Fix perf probe to use symtab only if there is no debuginfo, because debuginfo
has more information than symtab.

If we can't find a function in debuginfo, we never find it in symtab.

Signed-off-by: default avatarMasami Hiramatsu <mhiramat@redhat.com>
Reported-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@elte.hu>
LKML-Reference: <20100421195624.24664.46214.stgit@localhost6.localdomain6>
Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent 0ab061cd
Loading
Loading
Loading
Loading
+9 −8
Original line number Diff line number Diff line
@@ -180,16 +180,17 @@ static int try_to_find_kprobe_trace_events(struct perf_probe_event *pev,
		return -ENOENT;
	}
	/* Error path : ntevs < 0 */
	if (need_dwarf) {
		if (ntevs == -EBADF)
			pr_warning("No dwarf info found in the vmlinux - "
				"please rebuild with CONFIG_DEBUG_INFO=y.\n");
		return ntevs;
	}
	pr_debug("An error occurred in debuginfo analysis."
		 " Try to use symbols.\n");
	pr_debug("An error occurred in debuginfo analysis (%d).\n", ntevs);
	if (ntevs == -EBADF) {
		pr_warning("Warning: No dwarf info found in the vmlinux - "
			"please rebuild kernel with CONFIG_DEBUG_INFO=y.\n");
		if (!need_dwarf) {
			pr_debug("Trying to use symbols.\nn");
			return 0;
		}
	}
	return ntevs;
}

#define LINEBUF_SIZE 256
#define NR_ADDITIONAL_LINES 2