• Adrian Hunter's avatar
    perf tools: Improve thread_stack__event() for trace begin / end · 4d60e5e3
    Adrian Hunter authored
    thread_stack__event() is used to create call stacks, by keeping track of
    calls and returns. Improve the handling of trace begin / end to allow
    for a trace that ends in a call.
    
    Previously, the Intel PT decoder would indicate begin / end by a branch
    from / to zero. That hides useful information, in particular when a
    trace ends with a call. Before remedying that, enhance the thread stack
    so that it does not expect to see the 'return' for a 'call' that ends
    the trace.
    
    Committer notes:
    
    Added this:
    
                    return thread_stack__push(thread->ts, ret_addr,
    -                                         flags && PERF_IP_FLAG_TRACE_END);
    +                                         flags & PERF_IP_FLAG_TRACE_END);
    
    To fix problem spotted by:
    
    debian:9:            clang version 3.8.1-24 (tags/RELEASE_381/final)
    debian:experimental: clang version 6.0.1-6 (tags/RELEASE_601/final)
    Signed-off-by: default avatarAdrian Hunter <adrian.hunter@intel.com>
    Cc: Andi Kleen <ak@linux.intel.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Link: http://lkml.kernel.org/r/20180920130048.31432-4-adrian.hunter@intel.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    4d60e5e3
thread-stack.c 15 KB