20.08.2009 11:13, Roland McGrath wrote:
I've finally merged my output ref/tracker work, though it still
has
issues. I did a squash commit from my old branch, which is now stale.
That's "7cbb50 dwarf_output construction revamp for ref handling", on
dwarf branch, right? I'll work on merging dwarf branch back to my
writer branch.
As part of fixing the construction, I changed the internals of
dwarf_output::debug_info_entry::children_type as I'd been contemplating
for a while. Now it has an "info ()" method that returns its underlying
type, a std::vector<die_info_pair *>. That's still the pointer into the
collector's set of unique debug_info_entry objects, but now that's a map
so you get a pair<const debug_info_entry, die_info>. die_info is where
we can hang any writer data structures, pointers to abbrev info, etc.
So when the writer does a tree walk, it can use children ().info () to
have the die_info pointer handy for each DIE it's emitting. Its
_m_with_sibling and _m_uses fields are not really used for anything.
I currently only stick assigned abbrev code in there. _m_with_sibling
is used when deciding whether do emit DW_AT_sibling for that DIE.
Thanks,
PM