Brian Dessent wrote:
The first thing to check is whether the .so actually contains debug
info, since it sounds like it has been inadvertently stripped. You can
check by running objdump -wh and verifying that it contains the .debug_*
sections.
Thanks. That was a big step toward understanding it. There is some
line number info in the new .so and objdump can see it once I tried hard
enough. But there isn't line number info where I need it.
This is a BIG .so file. Most of its total size and all of the
interesting parts are inline instantiations of templated code inside
inline instantiations of other templated code. With gcc 4.1.2, objdump
could see line numbers (of the deepest level of inlined code). With gcc
4.3.2 it can't.
I'm not sure (I didn't think of a way to examine a large amount of the
objdump output) but all the places where I saw line number lines in the
objdump output for the new .so file were from non templated code, which
is a very small fraction of this .so file. Surprisingly, the
.debug_line section is just a little smaller for the 4.3.2 .so than for
the 4.1.2
.debug_line 0069f5e5 0000000000000000 0000000000000000 06975695
2**0 CONTENTS, READONLY, DEBUGGING
changed to
.debug_line 0064eb99 0000000000000000 0000000000000000 069ea5a8
2**0 CONTENTS, READONLY, DEBUGGING
so it obviously hasn't dropped all the line number info that objdump
can't see (or at least can't see as belonging to the correct addresses).
Do you have a suggestion for the next diagnostic step?