perf report: Do map lookups in resolve_callchain()
Bug introduced in 439d473b47
,
making the initial map be used for all IPs, so that symbols
outside this initial map would either be erroneously resolved or
not resolve at all.
Reported-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Frédéric Weisbecker <fweisbec@gmail.com>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Paul Mackerras <paulus@samba.org>
LKML-Reference: <1258909162-28496-1-git-send-email-acme@infradead.org>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
parent
87f8ea4cd3
commit
50e5095afa
1 changed files with 4 additions and 4 deletions
|
@ -467,7 +467,7 @@ static int call__match(struct symbol *sym)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static struct symbol **resolve_callchain(struct thread *thread, struct map *map,
|
||||
static struct symbol **resolve_callchain(struct thread *thread,
|
||||
struct ip_callchain *chain,
|
||||
struct symbol **parent)
|
||||
{
|
||||
|
@ -496,10 +496,10 @@ static struct symbol **resolve_callchain(struct thread *thread, struct map *map,
|
|||
case PERF_CONTEXT_HV:
|
||||
break;
|
||||
case PERF_CONTEXT_KERNEL:
|
||||
sym = kernel_maps__find_symbol(ip, &map, NULL);
|
||||
sym = kernel_maps__find_symbol(ip, NULL, NULL);
|
||||
break;
|
||||
default:
|
||||
sym = resolve_symbol(thread, &map, &ip);
|
||||
sym = resolve_symbol(thread, NULL, &ip);
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -529,7 +529,7 @@ hist_entry__add(struct thread *thread, struct map *map,
|
|||
struct hist_entry *he;
|
||||
|
||||
if ((sort__has_parent || callchain) && chain)
|
||||
syms = resolve_callchain(thread, map, chain, &parent);
|
||||
syms = resolve_callchain(thread, chain, &parent);
|
||||
|
||||
he = __hist_entry__add(thread, map, sym, parent,
|
||||
ip, count, level, &hit);
|
||||
|
|
Loading…
Reference in a new issue