On Wed, 2011-01-26 at 22:14 +0100, Mark Wielaard wrote:
So what is missing is "chaining" the reference attribute
(if we don't chain them, we end up with very "flat" hashes where lots
dies get the same hash just because they have a reference attribute).
Ideally this would just be ref_attr.reference()->local_hash (), but
since we calculate the hash of the attributes_type just before it is
inserted into the collector this doesn't work (the way this aborts is
somewhat obscure though - it ends up in in the dwarf_data::variant
constructor that throws a "can't happen!"). I am a little confused atm
about how the instantiation of the attributes_type gets triggered
precisely. It is probably necessary to do this in two phases by lifting
parts of pending_entry::final () method out in a second initialization
So here I am really a bit stuck. Although I figured out (see previous
email) how the dwarf_output::attributes_type gets constructed from the
dwarf_data::attributes_type, I don't fully understand how to "recapture"
the original references that the copier so diligently kept track of.
What/where/how would be the best point to extract this info, so that we
have it when we want to calculate a local hash for a reference attribute
(which is the local hash of the die pointed to by the attribute)?