lkml.org 
[lkml]   [2013]   [Dec]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 04/21] perf script: Fix symoff printing in callchains
    Date
    From: Adrian Hunter <adrian.hunter@intel.com>

    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.hunter@intel.com>
    Acked-by: David Ahern <dsahern@gmail.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: David Ahern <dsahern@gmail.com>
    Cc: Frederic Weisbecker <fweisbec@gmail.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Mike Galbraith <efault@gmx.de>
    Cc: Namhyung Kim <namhyung@gmail.com>
    Cc: Paul Mackerras <paulus@samba.org>
    Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
    Cc: Stephane Eranian <eranian@google.com>
    Link: http://lkml.kernel.org/r/1386315778-11633-2-git-send-email-adrian.hunter@intel.com
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.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 8a7da6f4a569..c236b38ed02b 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.8.1.4


    \
     
     \ /
      Last update: 2013-12-09 22:41    [W:4.474 / U:0.012 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site