For llvm-dwarfdump we need to handle relocations inside the debug info sections in order to successfully dump the dwarf info including strings. Nick sent out a partial patch that did this not too long ago and I've taken it and gone in a bit of a different direction, but kept the same basic architecture.<div>
<br></div><div>In place of applying the relocations to the data we've read from disk I'm keeping a separate mapping table to the side and checking that at locations in the dwarf I'm expecting relocated values. This adds a bit of complexity to the dwarf parsing/extraction at the benefit of not allocating memory for the entire size of the debug info section.</div>
<div><br></div><div>Couple of areas that will need to be improved later:</div><div><br></div><div>a) Relocations in more than a single section: the .debug_info section is the primary one I cared about first, however, we'll need either</div>
<div>  1) A better mapping that contains section + address (since the debug sections are mapped at address 0 I can't just use total offset)</div><div>  2) More mappings per section we're disassembling</div><div><br>
</div><div>I'm likely to go with #2 rather than #1, but I'm open to any rationale either direction.</div><div><br></div><div>b) Symbol relocations for function sections and/or functions as well as hooking it into, e.g. the aranges disassembly.</div>
<div><br></div><div>I've got plans to add these things as I go along, but since it was now pretty usable for testing/dumping I wanted to get it in and then incremental on top of it.</div><div><br></div><div>Thoughts?</div>
<div><br></div><div>-eric</div>