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