On Wed, 2015-11-25 at 17:00 +0100, Ben Gamari wrote:
Previously this was incorrectly assumed to be an ULEB128. Hilarity ensued.
This appears to be the case in both DWARF 3, DWARF 4, and LSB 5.
Nice catch. Interestingly we seem to handle this correctly in cfi.c, but not eu-readelf. But note that DWARF and the LSB eh_frame extension are slightly different. For DWARF .debug_frame this is indeed a "plain" address and your read_addr_unaligned_inc call is correct. But for LSB .eh_frame addresses are "encoded" and you should call read_encoded using the fde_encoding. It looks like fde_encoding isn't passed to print_cfa_program, so we should probably pass it from print_debug_frame_section.
It appears that there is no testfile which uses DW_CFA_set_loc. If you happen to have one that would be nice to add.
Do you want to combine this with the other patch for printing set_loc? Could you add a ChangeLog entry and Signed-off-by line for your patch as described in the CONTRIBUTING document: https://git.fedorahosted.org/cgit/elfutils.git/plain/CONTRIBUTING
Thanks,
Mark