= Work done last week:
* Time spent on elfutils: ~80%
* dwarflint:
* Validation of .debug_pubnames, .debug_pubtypes
* DIE references now remember where did they originate from.
That's used when writing an error message about the reference not being
satisfied.
* Message machinery was overhauled. Many macros were macros just
to honor the underlying message macros, and as this transitively applied
to functions higher up the hierarchy, everything was slowly becoming a
mess of variadic macros. I turned everything into functions, so at
least now we were passing va_lists back and forth, and had well defined
boundaries between chunks of code.
Then I introduced "struct where". Instances pinpoint a message
to concrete debug object (e.g. abbreviation section, abbreviation,
attribute), and may reference another where (e.g. where of a DIE would
reference where of a related abbreviation). Wheres can be chained to
form a "caused by" trace, like the way GCC does it for template
instantiations. This helped to clean up interfaces a lot: now the only
thing you need to pass between functions is a where pointer.
* Validation and coverage analysis of .debug_loc. For some
reason this consistently yields a lot of holes. I must be missing some
loclist pointer attribute. I picked a couple holes at random, and
grepped through the output from elfutils -w. The addresses were nowhere
to be found. So either elfutils is missing the same attribute as I, or
there really are holes of unreferenced garbage, or the holes I picked
were actually legitimate holes. I need to look closer on that one. I'm
thinking I'll just scan through the DIE chain looking for attributes
whose value happens to be interpretable as the address of one of the
holes (ala garbage collector).
= Work scheduled for this week:
* Expected time spent on elfutils: 50-80%.
* Finish what's left of .debug_aranges work (address/length
validation, .text coverage). Finish what's left of .debug_loc (i.e.
look at the coverage problem above).
* Write .debug_ranges validation.
* Fix 10-byte LEB128 that Roland posted about.
* Start the reloc work if I get the above in time.
PM