This is the mail archive of the elfutils-devel@sourceware.org mailing list for the elfutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: 2009-08-24 Status


I'm not entirely sure when I last posted status or how much time since then
was spent on elfutils.  Let's call it 60%.

* 0.142-1 pushed Fedora stable updates

* trunk work
** some nit fixes merged
** use dwarf_attr_integrate in convenience functions, symbol versioning for them

* dwarf branch
** various nits
** improve some hash functions
** tried profiled build, fixed build nits
** profiled slowest dwarf_output construction cases
   -> lots of time in string hashing
** added LHS string pointer cache to dwarf_output::copier, sped way up
** soup up dwarfcmp -l output behavior
** fixed tracker/comparator circular ref for sharing disparity cases


The last item is the (partial) resolution of the issues breaking the
dwarfcmp -T tests.  As I thought, in the dwarflint case the ref tracker
used for comparison was misdiagnosing some circular reference chain cases
as not matching.  The new complexity was introduced by (correct) sharing of
what were identical duplicates in the input.  Some of these cases were
unexpected, random subtrees like a parameter type list that happen to occur
identically in unrelated places.  Others were the duplicate reduction doing
exactly what we have it for, but it was a bit of a surprise that the
compiler sometimes produces duplicate top-level DIEs within the same CU.
(The cases I saw were DW_TAG_pointer_type and the like, where it just
doesn't keep track of how many times "foo *" appeared separately throughout
the CU and generates new DIEs whenever it needs to refer to one.)

Now the dwarflint case fails only for "identical but contexts mismatch"
reference cases.  These again turn out to be an indicator of duplicate
consolidation working.  The particular failures might well be ones where
we want to change the definition of "equal enough" for context DIEs.
But I'm not changing the plain tracker/comparator yet.  I want to wait
to address this until we really figure out sharing in dwarf_output.
Probably we should start first by making the collector entries share
only when the context is "equal enough" by the strict definition.
After we have it fully sharing the code for that context predicate,
we can look at loosening it up to improve sharing.


This week:

Expected amount of time on elfutils: 60%

* polish & commit tracker & dwarfcmp changes (done Tuesday)
* debug dwarfcmp -T dwarfcmp construction case
* collector matching for duplicated circularities
* look at writer code

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]