On Donnerstag, 18. Mai 2017 11:55:38 CEST Namhyung Kim wrote: > On Thu, May 18, 2017 at 10:38:22AM +0200, Milian Wolff wrote: > > 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: > > 21493 __hypot_finite (/usr/lib/libm-2.25.so) > > > > a4a std::abs<double> (inline) (/tmp/a.out) > > a4a std::_Norm_helper<true>::_S_do_it<double> > > (inline) (/tmp/a.out) > > a4a std::norm<double> (inline) (/tmp/a.out) > > a4a main (/tmp/a.out) > > > > 20510 __libc_start_main (/usr/lib/libc-2.25.so) > > > > bd9 _start (/tmp/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: > > 21493 __hypot_finite (/usr/lib/libm-2.25.so) > > > > ace3 hypot (/usr/lib/libm-2.25.so) > > Why is the 'hypot' missing in the above perf script output? Is it > another problem?
Uhm, good question. I fear I messed up by testing this with other patches
applied in the background. I just tested this in a stand-alone manner and I
cannot reproduce this issue. The script output is different, too (based on
your original patch). I'll update the commit message and send v3.
Before:
21561 __hypot_finite (/usr/lib/libm-2.25.so)
ace3 hypot (/usr/lib/libm-2.25.so)
a4a main (/home/milian/projects/src/perf-tests/inlining)
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 (/home/milian/projects/src/perf-tests/
inlining)
After:
21561 __hypot_finite (/usr/lib/libm-2.25.so)
ace3 hypot (/usr/lib/libm-2.25.so)
a4a main (/home/milian/projects/src/perf-tests/inlining)
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 (/home/milian/projects/src/perf-tests/
inlining)
Btw, if you wonder why main is twice in there - that's going to be fixed by my
upcoming patch series to rework inline frames.
Cheers
--
Milian Wolff | [email protected] | Software Engineer
KDAB (Deutschland) GmbH&Co KG, a KDAB Group company
Tel: +49-30-521325470
KDAB - The Qt Experts
smime.p7s
Description: S/MIME cryptographic signature

