$ make clean all rm -f *.o *.s *.ii m g++45 -Wall -g2 -O1 a.cpp -c g++45 -Wall -g2 -O1 m.cpp -c g++45 -Wall -g2 -O1 a.o m.o -o m --save-temps -fverbose-asm
$ readelf --debug-dump=pubnames ./m (...) Offset Name 8e7 Y::foo <== 913 X::foo <== 968 X::~X 98f Y::~Y 9b6 Y::~Y 9fe X::~X a3a X::X a61 X::bar (gdb) break Y::foo() Breakpoint 1 at 0x400768: file a.cpp, line 25. (gdb) bt #0 Y::foo (this=0x7fffffffe1c0) at a.cpp:26 ^^^^^^ readable location with namespace/class prefix. now the same with -flto. $ make clean all LTOFLAGS=-flto rm -f *.o *.s *.ii m g++45 -Wall -g2 -O1 -flto a.cpp -c g++45 -Wall -g2 -O1 -flto m.cpp -c g++45 -Wall -g2 -O1 -flto a.o m.o -o m --save-temps -fverbose-asm Offset Name 87 foo <== ca foo <== 10d __base_dtor 12c __base_dtor 14b __deleting_dtor 183 __deleting_dtor 1a2 __base_ctor 1c1 bar 1f5 main (gdb) b Y::foo() Breakpoint 1 at 0x400768: file a.cpp, line 24. (gdb) bt #0 foo (this=0x7fffffffe1c0) at a.cpp:26 ^^^ some cryptic foo. -- Summary: lto decreases stacktrace readability (debuginfo pubnames). Product: gcc Version: 4.5.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: lto AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: pluto at agmk dot net GCC build triplet: x86_64-gnu-linux GCC host triplet: x86_64-gnu-linux GCC target triplet: x86_64-gnu-linux http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43377