diff options
Diffstat (limited to 'tools/perf/util/event.c')
-rw-r--r-- | tools/perf/util/event.c | 26 |
1 files changed, 17 insertions, 9 deletions
diff --git a/tools/perf/util/event.c b/tools/perf/util/event.c index 1abaefc126a8..5a6e827a09eb 100644 --- a/tools/perf/util/event.c +++ b/tools/perf/util/event.c | |||
@@ -422,11 +422,10 @@ int event__process_task(event_t *self, struct perf_session *session) | |||
422 | return 0; | 422 | return 0; |
423 | } | 423 | } |
424 | 424 | ||
425 | void thread__find_addr_location(struct thread *self, | 425 | void thread__find_addr_map(struct thread *self, |
426 | struct perf_session *session, u8 cpumode, | 426 | struct perf_session *session, u8 cpumode, |
427 | enum map_type type, u64 addr, | 427 | enum map_type type, u64 addr, |
428 | struct addr_location *al, | 428 | struct addr_location *al) |
429 | symbol_filter_t filter) | ||
430 | { | 429 | { |
431 | struct map_groups *mg = &self->mg; | 430 | struct map_groups *mg = &self->mg; |
432 | 431 | ||
@@ -441,7 +440,6 @@ void thread__find_addr_location(struct thread *self, | |||
441 | else { | 440 | else { |
442 | al->level = 'H'; | 441 | al->level = 'H'; |
443 | al->map = NULL; | 442 | al->map = NULL; |
444 | al->sym = NULL; | ||
445 | return; | 443 | return; |
446 | } | 444 | } |
447 | try_again: | 445 | try_again: |
@@ -460,11 +458,21 @@ try_again: | |||
460 | mg = &session->kmaps; | 458 | mg = &session->kmaps; |
461 | goto try_again; | 459 | goto try_again; |
462 | } | 460 | } |
463 | al->sym = NULL; | 461 | } else |
464 | } else { | ||
465 | al->addr = al->map->map_ip(al->map, al->addr); | 462 | al->addr = al->map->map_ip(al->map, al->addr); |
463 | } | ||
464 | |||
465 | void thread__find_addr_location(struct thread *self, | ||
466 | struct perf_session *session, u8 cpumode, | ||
467 | enum map_type type, u64 addr, | ||
468 | struct addr_location *al, | ||
469 | symbol_filter_t filter) | ||
470 | { | ||
471 | thread__find_addr_map(self, session, cpumode, type, addr, al); | ||
472 | if (al->map != NULL) | ||
466 | al->sym = map__find_symbol(al->map, session, al->addr, filter); | 473 | al->sym = map__find_symbol(al->map, session, al->addr, filter); |
467 | } | 474 | else |
475 | al->sym = NULL; | ||
468 | } | 476 | } |
469 | 477 | ||
470 | static void dso__calc_col_width(struct dso *self) | 478 | static void dso__calc_col_width(struct dso *self) |