• Matt Fleming's avatar
    sh: Try again at getting the initial return address for an unwind · b955873b
    Matt Fleming authored
    The previous hack for calculating the return address for the first frame
    we unwind (dwarf_unwinder_dump) didn't always work. The problem was that
    it assumed once it read the rule for calculating the return address,
    there would be no new rules for calculating it. This isn't true because
    the way in which the CFA is calculated can change as you progress
    through a function and the return address is figured out using the
    CFA. Therefore, the way to calculate the return address can change.
    
    So, instead of using some offset from the beginning of
    dwarf_unwind_stack which is just a flakey approach, and instead of
    executing instructions from the FDE until the return address is setup,
    we now figure out the pc in dwarf_unwind_stack() just before we call
    dwarf_cfa_execute_insns().
    Signed-off-by: default avatarMatt Fleming <matt@console-pimps.org>
    b955873b
dwarf.c 21 KB