= Work done last week:
* I spent around 80% of time on elfutils work this week.
* Read roadmap and a write-up about dwarflint.
* Merge monotone trunk into my sharing & threads branches. Fix what
got broken, commit.
* Initial work on dwarflint. Current status is as follows:
- It loads .debug_abbrev, doing checks for validity of various
fields along the way. LEB128s are checked for overflow. All reads are
checked that they don't pass outside the section data.
- It uses this abbrev table to load .debug_info. Again, if a range
of allowed values is given, fields are validated. Invalid and unused
abbrev codes are detected. DIE references are checked to point to
actual DIE beginnings, as opposed to a bunch of bytes that happens to be
interpretable as a DIE. DIEs whose abbreviation has_children are
checked to actually have non-zero children.
- String references are marked and holes of unused bytes in
.dwarf_str are reported.
- Most of that can't be considered tested. I tried a couple
debuginfo files (emacs, libX11, libsc680lx from OpenOffice). debuginfo
files often seem to contain unused .debug_str bytes. Non-zero DIEs
followed by zero DIEs are reported for libsc680lx, which is suspicious
and likely a bug in lint. False positives of this type will have to be
fixed as the producer development proceeds.
- The implementation should be reasonably snappy for normal-sized
files. I tried to lint OpenOffice's libsc680lx, a 130MB debuginfo file,
and it takes a bit under six seconds on my 2G core2 machine; so there
may be a room for improvement, but I don't think it's pressing.
- The code sits on pmachata/dwarflint branch. My thinking is that
when the producer branch is created, this branch gets merged in and
deleted, and further development will take place on producer branch.
= Work scheduled for next week:
* My plan for this week doesn't leave room for any serious elfutils
work at all. If something changes, I'll work on:
- dwarflint fixes
- correct DW_AT_sibling attribute value
- checks of other sections (aranges, ranges, locs)
= Holidays:
* My plan is to have the last day this Friday (19th), and come back
5th January. But odds are good that I'll grow bored and work on
something anyway.
PM