The address being used to calculate the offset was
the memory address but the address needed is the
address mapped to the dso. i.e. the 'addr' member
of 'struct addr_location'

Signed-off-by: Adrian Hunter <adrian.hun...@intel.com>
---
 tools/perf/util/session.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/tools/perf/util/session.c b/tools/perf/util/session.c
index 8a7da6f..c236b38 100644
--- a/tools/perf/util/session.c
+++ b/tools/perf/util/session.c
@@ -1515,6 +1515,8 @@ void perf_evsel__print_ip(struct perf_evsel *evsel, 
struct perf_sample *sample,
                        node_al = *al;
 
                while (stack_depth) {
+                       u64 addr = 0;
+
                        node = callchain_cursor_current(&callchain_cursor);
                        if (!node)
                                break;
@@ -1525,10 +1527,13 @@ void perf_evsel__print_ip(struct perf_evsel *evsel, 
struct perf_sample *sample,
                        if (print_ip)
                                printf("%c%16" PRIx64, s, node->ip);
 
+                       if (node->map)
+                               addr = node->map->map_ip(node->map, node->ip);
+
                        if (print_sym) {
                                printf(" ");
                                if (print_symoffset) {
-                                       node_al.addr = node->ip;
+                                       node_al.addr = addr;
                                        node_al.map  = node->map;
                                        symbol__fprintf_symname_offs(node->sym, 
&node_al, stdout);
                                } else
-- 
1.7.11.7

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to