https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91929
Bug ID: 91929 Summary: missing inline subroutine information in static build using sin/cos Product: gcc Version: 9.1.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: debug Assignee: unassigned at gcc dot gnu.org Reporter: mail at milianw dot de Target Milestone: --- Hey there, take the attached C++ code sample and compile it with `g++ -O2 -g -static` to produce the attached binary. Sampling it with perf produces strange backtraces even when including inline frames - it seems like the information is simply lacking from the generated binary? See e.g.: ``` $ addr2line -i -C -f -p -e vector_static_gcc_v9.1.0 -a 418790 0x0000000000418790: __cos_fma at ??:? $ addr2line -i -C -f -p -e vector_static_gcc_v9.1.0 -a 401572 0x0000000000401572: generate_n<std::back_insert_iterator<std::vector<double> >, int, main()::<lambda()> > at /usr/include/c++/9.1.0/bits/stl_algo.h:4449 (inlined by) main at /.../vector.cpp:16 ``` Here's a backtrace from GDB showing this odd behavior: ``` (gdb) b __cos_fma Breakpoint 2 at 0x418790 (gdb) c Continuing. Breakpoint 2, 0x0000000000418790 in __cos_fma () (gdb) bt #0 0x0000000000418790 in __cos_fma () #1 0x0000000000401573 in std::generate_n<std::back_insert_iterator<std::vector<double> >, int, main()::<lambda()> > (__n=100000, __gen=..., __first=...) at /usr/include/c++/9.1.0/new:174 #2 main () at ../../../manual/clients/vector.cpp:16 ``` I'm missing inline frames for the lambda and `std::cos<int>` or similar. When replacing g++ with clang++ 8.0.1 this looks better: ``` (gdb) bt #0 0x00000000004191d0 in __cos_fma () #1 0x0000000000402663 in std::cos<int> (__x=<optimized out>) at /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/9.1.0/../../../../include/c++/9.1.0/cmath:197 #2 main::$_0::operator() (this=<optimized out>) at ./vector.cpp:14 #3 std::generate_n<std::back_insert_iterator<std::vector<double, std::allocator<double> > >, int, main::$_0> (__first=..., __n=100000, __gen=...) at /usr/bin/../lib64/gcc/x86_64-pc-linux-gnu/9.1.0/../../../../include/c++/9.1.0/bits/stl_algo.h:4450 #4 main () at ./vector.cpp:12 ```