[Dwarf-discuss] Question about differentiate instruction address in different sections
Thu Apr 13 11:06:57 GMT 2006
Jim Blandy writes:
>This seems fragile, and more work than actually checking the relocs.
>All you need to do is read the .rel.debug_info section, and build a
>table sorted by the address the reloc is meant to modify. Then, when
>an address appears in the line number info, check the table to see if
>there is a reloc that applies to it. If there is, that reloc refers
I think Jim's correct.
BTW: libdwarf was not designed to be used on unrelocated object files.
At the time it was designed relocatable objects only had a
single text section (well the exceptions were very very
exceptional...). So it mostly worked pretty well. Perhaps
'adequately' is a better word :-)
Today things like using groups of sections for effective
duplicate-removal or having a static-linker avoid bringing in
dead fuctions have made multiple sections much more common.
(for example, the COMDAT notion.)
However, before tackling that I have some things to finish. I
have a libdwarf/dwarfdump version in testing for which a
'dwarfdump configuration file' (dwarfdump.conf, a simple text
file) lets you give frame/eh_frame descriptions in text (per
ABI, for whatever ABIs you want) so dwarfdump can sensibly
print a wide range of ABIs without touching dwarf.h or
libdwarf.h or recompiling dwarfdump. The existing .debug_frame
.eh_frame library interface has some significant limitations.
The new frame interface (additional one, not replacement, the old remains)
is more flexible and more correct.
I should re-evaluate the 'multiple .debug_info' (etc) sections
issue at some point. Not right now...
More information about the Dwarf-discuss