diff options
author | Milian Wolff <milian.wolff@kdab.com> | 2016-08-16 11:39:26 -0400 |
---|---|---|
committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2016-08-16 14:23:29 -0400 |
commit | 67540759151aefafddade3e27c4671ab7b3d230f (patch) | |
tree | b6538a7f2e5693411ee3ad17a5199a5a820b1785 /tools/perf | |
parent | 3cace81ea5bb0b3f2b97cab8e2c8e1fae2feb7ed (diff) |
perf unwind: Use addr_location::addr instead of ip for entries
This fixes the srcline translation for call chains of user space
applications.
Before we got:
perf report --stdio --no-children -s sym,srcline -g address
8.92% [.] main mandelbrot.h:41
|
|--3.70%--main +8390240
| __libc_start_main +139950056726769
| _start +8388650
|
|--2.74%--main +8390189
|
--2.08%--main +8390296
__libc_start_main +139950056726769
_start +8388650
7.59% [.] main complex:1326
|
|--4.79%--main +8390203
| __libc_start_main +139950056726769
| _start +8388650
|
--2.80%--main +8390219
7.12% [.] __muldc3 libgcc2.c:1945
|
|--3.76%--__muldc3 +139950060519490
| main +8390224
| __libc_start_main +139950056726769
| _start +8388650
|
--3.32%--__muldc3 +139950060519512
main +8390224
With this patch applied, we instead get:
perf report --stdio --no-children -s sym,srcline -g address
8.92% [.] main mandelbrot.h:41
|
|--3.70%--main mandelbrot.h:41
| __libc_start_main +241
| _start +4194346
|
|--2.74%--main mandelbrot.h:41
|
--2.08%--main mandelbrot.h:41
__libc_start_main +241
_start +4194346
7.59% [.] main complex:1326
|
|--4.79%--main complex:1326
| __libc_start_main +241
| _start +4194346
|
--2.80%--main complex:1326
7.12% [.] __muldc3 libgcc2.c:1945
|
|--3.76%--__muldc3 libgcc2.c:1945
| main mandelbrot.h:39
| __libc_start_main +241
| _start +4194346
|
--3.32%--__muldc3 libgcc2.c:1945
main mandelbrot.h:39
Suggested-and-Acked-by: Namhyung Kim <namhyung@kernel.org>
Signed-off-by: Milian Wolff <milian.wolff@kdab.com>
Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
LPU-Reference: 20160816153926.11288-1-milian.wolff@kdab.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools/perf')
-rw-r--r-- | tools/perf/util/unwind-libdw.c | 2 | ||||
-rw-r--r-- | tools/perf/util/unwind-libunwind-local.c | 2 |
2 files changed, 2 insertions, 2 deletions
diff --git a/tools/perf/util/unwind-libdw.c b/tools/perf/util/unwind-libdw.c index cf5e250bc78e..783a53fb7a4e 100644 --- a/tools/perf/util/unwind-libdw.c +++ b/tools/perf/util/unwind-libdw.c | |||
@@ -66,7 +66,7 @@ static int entry(u64 ip, struct unwind_info *ui) | |||
66 | if (__report_module(&al, ip, ui)) | 66 | if (__report_module(&al, ip, ui)) |
67 | return -1; | 67 | return -1; |
68 | 68 | ||
69 | e->ip = ip; | 69 | e->ip = al.addr; |
70 | e->map = al.map; | 70 | e->map = al.map; |
71 | e->sym = al.sym; | 71 | e->sym = al.sym; |
72 | 72 | ||
diff --git a/tools/perf/util/unwind-libunwind-local.c b/tools/perf/util/unwind-libunwind-local.c index 97c0f8fc5561..20c2e5743903 100644 --- a/tools/perf/util/unwind-libunwind-local.c +++ b/tools/perf/util/unwind-libunwind-local.c | |||
@@ -542,7 +542,7 @@ static int entry(u64 ip, struct thread *thread, | |||
542 | thread__find_addr_location(thread, PERF_RECORD_MISC_USER, | 542 | thread__find_addr_location(thread, PERF_RECORD_MISC_USER, |
543 | MAP__FUNCTION, ip, &al); | 543 | MAP__FUNCTION, ip, &al); |
544 | 544 | ||
545 | e.ip = ip; | 545 | e.ip = al.addr; |
546 | e.map = al.map; | 546 | e.map = al.map; |
547 | e.sym = al.sym; | 547 | e.sym = al.sym; |
548 | 548 | ||