• Milian Wolff's avatar
    perf report: Do not drop last inlined frame · 4d53b9d5
    Milian Wolff authored
    The very last inlined frame, i.e. the one furthest away from the
    non-inlined frame, was silently dropped. This is apparent when
    comparing the output of `perf script` and `addr2line`:
    
    ~~~~~~
      $ perf script --inline
      ...
      a.out 26722 80836.309329:      72425 cycles:
                         21561 __hypot_finite (/usr/lib/libm-2.25.so)
                          ace3 hypot (/usr/lib/libm-2.25.so)
                           a4a main (a.out)
                               std::abs<double>
                               std::_Norm_helper<true>::_S_do_it<double>
                               std::norm<double>
                               main
                         20510 __libc_start_main (/usr/lib/libc-2.25.so)
                           bd9 _start (a.out)
    
      $ addr2line -a -f -i -e /tmp/a.out a4a | c++filt
      0x0000000000000a4a
      std::__complex_abs(doublecomplex )
      /usr/include/c++/6.3.1/complex:589
      double std::abs<double>(std::complex<double> const&)
      /usr/include/c++/6.3.1/complex:597
      double std::_Norm_helper<true>::_S_do_it<double>(std::complex<double> const&)
      /usr/include/c++/6.3.1/complex:654
      double std::norm<double>(std::complex<double> const&)
      /usr/include/c++/6.3.1/complex:664
      main
      /tmp/inlining.cpp:14
    ~~~~~
    
    Note how `std::__complex_abs` is missing from the `perf script`
    output. This is similarly showing up in `perf report`. The patch
    here fixes this issue, and the output becomes:
    
    ~~~~~
      a.out 26722 80836.309329:      72425 cycles:
                         21561 __hypot_finite (/usr/lib/libm-2.25.so)
                          ace3 hypot (/usr/lib/libm-2.25.so)
                           a4a main (a.out)
                               std::__complex_abs
                               std::abs<double>
                               std::_Norm_helper<true>::_S_do_it<double>
                               std::norm<double>
                               main
                         20510 __libc_start_main (/usr/lib/libc-2.25.so)
                           bd9 _start (a.out)
    ~~~~~
    Signed-off-by: default avatarMilian Wolff <milian.wolff@kdab.com>
    Signed-off-by: default avatarNamhyung Kim <namhyung@kernel.org>
    Cc: Arnaldo Carvalho de Melo <acme@kernel.org>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: David Ahern <dsahern@gmail.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Yao Jin <yao.jin@linux.intel.com>
    Cc: kernel-team@lge.com
    Link: http://lkml.kernel.org/r/20170524062129.32529-7-namhyung@kernel.orgSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
    4d53b9d5
srcline.c 9.58 KB