diff options
Diffstat (limited to 'tools/perf/util/unwind-libunwind.c')
| -rw-r--r-- | tools/perf/util/unwind-libunwind.c | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/tools/perf/util/unwind-libunwind.c b/tools/perf/util/unwind-libunwind.c index 4d45c0dfe343..371219a6daf1 100644 --- a/tools/perf/util/unwind-libunwind.c +++ b/tools/perf/util/unwind-libunwind.c | |||
| @@ -284,7 +284,7 @@ static struct map *find_map(unw_word_t ip, struct unwind_info *ui) | |||
| 284 | { | 284 | { |
| 285 | struct addr_location al; | 285 | struct addr_location al; |
| 286 | 286 | ||
| 287 | thread__find_addr_map(ui->thread, ui->machine, PERF_RECORD_MISC_USER, | 287 | thread__find_addr_map(ui->thread, PERF_RECORD_MISC_USER, |
| 288 | MAP__FUNCTION, ip, &al); | 288 | MAP__FUNCTION, ip, &al); |
| 289 | return al.map; | 289 | return al.map; |
| 290 | } | 290 | } |
| @@ -374,7 +374,7 @@ static int access_dso_mem(struct unwind_info *ui, unw_word_t addr, | |||
| 374 | struct addr_location al; | 374 | struct addr_location al; |
| 375 | ssize_t size; | 375 | ssize_t size; |
| 376 | 376 | ||
| 377 | thread__find_addr_map(ui->thread, ui->machine, PERF_RECORD_MISC_USER, | 377 | thread__find_addr_map(ui->thread, PERF_RECORD_MISC_USER, |
| 378 | MAP__FUNCTION, addr, &al); | 378 | MAP__FUNCTION, addr, &al); |
| 379 | if (!al.map) { | 379 | if (!al.map) { |
| 380 | pr_debug("unwind: no map for %lx\n", (unsigned long)addr); | 380 | pr_debug("unwind: no map for %lx\n", (unsigned long)addr); |
| @@ -476,14 +476,13 @@ static void put_unwind_info(unw_addr_space_t __maybe_unused as, | |||
| 476 | pr_debug("unwind: put_unwind_info called\n"); | 476 | pr_debug("unwind: put_unwind_info called\n"); |
| 477 | } | 477 | } |
| 478 | 478 | ||
| 479 | static int entry(u64 ip, struct thread *thread, struct machine *machine, | 479 | static int entry(u64 ip, struct thread *thread, |
| 480 | unwind_entry_cb_t cb, void *arg) | 480 | unwind_entry_cb_t cb, void *arg) |
| 481 | { | 481 | { |
| 482 | struct unwind_entry e; | 482 | struct unwind_entry e; |
| 483 | struct addr_location al; | 483 | struct addr_location al; |
| 484 | 484 | ||
| 485 | thread__find_addr_location(thread, machine, | 485 | thread__find_addr_location(thread, PERF_RECORD_MISC_USER, |
| 486 | PERF_RECORD_MISC_USER, | ||
| 487 | MAP__FUNCTION, ip, &al); | 486 | MAP__FUNCTION, ip, &al); |
| 488 | 487 | ||
| 489 | e.ip = ip; | 488 | e.ip = ip; |
| @@ -586,21 +585,21 @@ static int get_entries(struct unwind_info *ui, unwind_entry_cb_t cb, | |||
| 586 | unw_word_t ip; | 585 | unw_word_t ip; |
| 587 | 586 | ||
| 588 | unw_get_reg(&c, UNW_REG_IP, &ip); | 587 | unw_get_reg(&c, UNW_REG_IP, &ip); |
| 589 | ret = ip ? entry(ip, ui->thread, ui->machine, cb, arg) : 0; | 588 | ret = ip ? entry(ip, ui->thread, cb, arg) : 0; |
| 590 | } | 589 | } |
| 591 | 590 | ||
| 592 | return ret; | 591 | return ret; |
| 593 | } | 592 | } |
| 594 | 593 | ||
| 595 | int unwind__get_entries(unwind_entry_cb_t cb, void *arg, | 594 | int unwind__get_entries(unwind_entry_cb_t cb, void *arg, |
| 596 | struct machine *machine, struct thread *thread, | 595 | struct thread *thread, |
| 597 | struct perf_sample *data, int max_stack) | 596 | struct perf_sample *data, int max_stack) |
| 598 | { | 597 | { |
| 599 | u64 ip; | 598 | u64 ip; |
| 600 | struct unwind_info ui = { | 599 | struct unwind_info ui = { |
| 601 | .sample = data, | 600 | .sample = data, |
| 602 | .thread = thread, | 601 | .thread = thread, |
| 603 | .machine = machine, | 602 | .machine = thread->mg->machine, |
| 604 | }; | 603 | }; |
| 605 | int ret; | 604 | int ret; |
| 606 | 605 | ||
| @@ -611,7 +610,7 @@ int unwind__get_entries(unwind_entry_cb_t cb, void *arg, | |||
| 611 | if (ret) | 610 | if (ret) |
| 612 | return ret; | 611 | return ret; |
| 613 | 612 | ||
| 614 | ret = entry(ip, thread, machine, cb, arg); | 613 | ret = entry(ip, thread, cb, arg); |
| 615 | if (ret) | 614 | if (ret) |
| 616 | return -ENOMEM; | 615 | return -ENOMEM; |
| 617 | 616 | ||
