On Fri, Jan 20, 2012 at 01:05:04PM -0800, Roland McGrath wrote:
I don't know of anything else anyone intends to work on any time soon. If you have any plans, please post about them.
I like to see a new release soon, but I had one little patchlet.
In Dwarf 4 there is the new DW_FORM_sec_offset which replaces either DW_FORM_data4 or DW_FORM_data8 for section offsets. But dwarf_formudata doesn't recognize it. That means you cannot easily get at offset values like you could with Dwarf 3. I needed it recently when looking for .debug_ranges index sharing in DIEs. There is a "workaround" that readelf uses:
case DW_FORM_sec_offset: attrp->form = cbargs->offset_size == 8 ? DW_FORM_data8 : DW_FORM_data4; /* Fall through. */
case DW_FORM_udata: case DW_FORM_sdata: case DW_FORM_data8: case DW_FORM_data4: case DW_FORM_data2: case DW_FORM_data1:; Dwarf_Word num; if (unlikely (dwarf_formudata (attrp, &num) != 0)) goto attrval_out;
But that is slightly ugly and requires you keep track of the offset_size of the cu (which libdw gives you, but requires some extra work with libdwfl). So I would like to just accept DW_FORM_sec_offset in dwarf_formudata.
Does that look sane, or do you want a specific dwarf_formsec_off function for that?
Thanks,
Mark