I think the CFI support is about ready to merge in.
I did a single-commit version on the new branch roland/merge-cfi.
This has some recent fixups for reloc support, and I dropped
dwfl_addrframe for now since I'm not real sure about it.
Please give it a good eyeball and tell me if you think it is OK to merge.
Now common (maybe gcc 4.4 fixed its output?):
warning: .debug_info: DIE 0x851d7: DIE "member" has attribute "MIPS_linkage_name", which is not expected.
warning: .debug_info: DIE 0x851d7: DIE "member" has attribute "external", which is not expected.
warning: .debug_info: DIE 0x851d7: DIE "member" has attribute "const_value", which is not expected.
DW_TAG_member can have basically all the same attrs as DW_TAG_variable.
Those and DW_TAG_formal_parameter can have DW_AT_const_value; it is
normally mutually exclusing with DW_AT_location, but having both is a
"suspicious" rather than a "wrong".
member/variable can have DW_AT_external. Basically anything that can have
DW_AT_external can have DW_AT_MIPS_linkage_name. There should be a
grouping for those so the DW_AT_external et al handling is in common.
But in that common code it wants a special case: DW_AT_MIPS_linkage_name
without DW_AT_external is suspicious.
Also, still getting a lot of:
error: .debug_aranges: addresses 0x412fe9..0x412fe9 of section .text are not covered.
Is that saying a 0-byte range or a 1-byte range? Perhaps use [x,y] or
[x,y) notation for all byte/addr ranges to be more clear. If it's a 1-byte
range, it should not be complaining because .text has sh_addralign=16, so
[0x412fe9,0x412ff0) is expected alignment padding.
According to the Dwarf spec DW_AT_data_member_location can also take a
simple constant offset when encoded as DW_FORM_data or
DW_FORM_[us]data. I submitted a patch to gcc to output that instead of a
whole location expression block when possible. The attached patch makes
readelf display such simple offsets as constants.
I instantly fell down on my own reporting schedule, of course.
It was a moderately productive week and weekend, but I stayed up
hacking all Sunday night and never posted.
Time actually spent on elfutils: 85%
* reference tracker
** done and working well for dwarfcmp tests
* dwarf_edit hand-building fixed/fleshed-out, added tests/dwarf_edit
** done and working well for dwarf_edit copying in dwarfcmp tests
I posted some details during the week about the tracker and ref-maker.
** basic value_sets for all leaf values (no refs)
** DIE structure/refs fake (same as dwarf_edit), but working for tests
* dwarfcmp -T tests only dwarf_output, -TT for dwarf_edit, -TTT for both
Expected time spent on elfutils: 80%
** DIE structure stored in collector
*** basic constructor magic
*** collector implements smart tracker/maker
** first draft of abbrev generation (probably do all DW_FORM_indirect)
** maybe some actual output