unwind non-PC registers using elfutils

Jacob Burkholder jake.burkholder2@gmail.com
Sun Oct 3 16:38:06 GMT 2021

Hi, I'm trying to figure out how to unwind registers other than the PC
using elfutils.  I can use dwfl_module_register_names to get the register
names, and then I'm trying to use dwarf_frame_register to get the register
values for a given frame.  I looked at the code in __libdwfl_frame_unwind
and there's another example in addrcfi.c.   dwarf_frame_register seems
quite a low level dwarf API, I'm not sure how to use the ops that are
returned, also the code used by __libdwfl_frame_unwind to evaluate the ops
is all static or internal so not callable.  Any guidance?  Do I need to
basically interpret the dwarf atoms in the ops returned by
dwarf_frame_register?  Any plans to make code like
frame_unwind.c:expr_eval() used by frame_unwind.c:handle_cfi externally

More information about the Elfutils-devel mailing list