Reading the stabs.index section of Shared Libs
Hi there.
In order to produce developer-friendly stack-traces, I'd like to read the stabs info from our own projects to map the stack offsets to actual code lines.
So far, I've sucessfully written the reader to handle the lazy stabs inside our object files, and I get the relevant mapping (using N_SLINE, N_FUN and N_SO). But I don't have much luck trying to find these actual .o files from the shared libs (using the N_OBJ stabs contained in the ".stab.index" section of the shared library).
It looks like Sun Studio 11 (maybe earlier versions too) writes the stabs in an odd format in our shared-lib, so that only the beginning of the section is correct (only the one covered by the first N_UNDF) . After a while, the offset to the strings get wrong, even using the "correct" algorithm of adding the offset contained in the previous N_UNDF stab.
So, I can read all the information correctly, except for the actual strings for each stab. I had a look at some other stab-readers (gdb and valgrind), and they suffer from the same issue as my code. Actually, even an [i]objdump -G mySharedlib.so[/i] produces the same incorrect output. But obviously, there is a way of find the correct string pointers, as the [i]dumpstabs [/i]tool works perfectly.
Does anyone have any pointer to the actual trick needed to read the stabs ? I've already read "The stabs debug format", and the document provided by Sun (and linked from Chris Quenelle's blog): http://developers.sun.com/tools/cc/documentation/ss10_docs/stabs.pdf
Cheers

