I renamed the branch to just "relocate". Go ahead and push to it (but
don't forget, the branch gets ChangeLog entries too--they're written for
merging, so they describe the branch's changes relative to the trunk,
not intermediate changes in the branch's private history, or at least I
think that's how I was doing it).
My memory of this is all quite dim. But I think the CFI thing is just some
It looks like I did some changes to the CFI code that aren't intrinsically
related, like adding the dwarf_cfi_frames interface. That looks to be
aimed at making it possible to have a high-level iterator view of the CFI
we could export in the C++ interface, which would be necessary for
rewriting CFI. (My notion was to have the compressed DWARF or the
consolidated debug archives get rewritten CFI that combines the .eh_frame
and .debug_frame data together and then optimizes, or something like that.)
But I don't seem to have actually done the relocatability work in the CFI
decoder. i.e. it's lacking any new interfaces using Dwarf_Relocatable.
But actually, that's neither here nor there. The CFI decoder is
high-level, so it would never be used for readelf, which just prints the
uninterpreted CFI programs. It would be used by something like binutils'
readelf --debug-dump=frames-interp, which we haven't implemented in our
readelf as yet (dwarf_cfi_frames is exactly what that would use).
readelf uses libdwfl on ET_REL files, but libdwfl no longer relocates data
in place. So the bits of readelf that directly decode DWARF data rather
than using libdw interfaces no longer see the relocation. We'll need to
update them to use the new relocation internals explicitly, or something.
(I've forgotten if there is anything else in readelf other than CFI that it
So those are at least two more things that aren't really finished on the
branch (CFI interfaces, and readelf --debug-dump=frames).