|
From: Masami H. <mhi...@re...> - 2010-04-21 19:50:21
|
Fix perf probe to use symtab only if there is no debuginfo,
because debuginfo has more precise information than symtab.
If we can't find a function in debuginfo, we never find it
in symtab.
Signed-off-by: Masami Hiramatsu <mhi...@re...>
Reported-by: Arnaldo Carvalho de Melo <ac...@re...>
Cc: Paul Mackerras <pa...@sa...>
Cc: Peter Zijlstra <pe...@in...>
Cc: Mike Galbraith <ef...@gm...>
Cc: Frederic Weisbecker <fwe...@gm...>
Cc: Ingo Molnar <mi...@el...>
---
tools/perf/util/probe-event.c | 17 +++++++++--------
1 files changed, 9 insertions(+), 8 deletions(-)
diff --git a/tools/perf/util/probe-event.c b/tools/perf/util/probe-event.c
index 4fb4803..5d3baec 100644
--- a/tools/perf/util/probe-event.c
+++ b/tools/perf/util/probe-event.c
@@ -180,15 +180,16 @@ 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 (%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;
+ }
}
- pr_debug("An error occurred in debuginfo analysis."
- " Try to use symbols.\n");
- return 0;
+ return ntevs;
}
#define LINEBUF_SIZE 256
--
Masami Hiramatsu
e-mail: mhi...@re...
|