• Jinyang He's avatar
    LoongArch: Use correct sp value to get graph addr in stack unwinders · 5bb8d344
    Jinyang He authored
    The stack frame when function_graph enable like follows,
    
    ---------  <- function sp_on_entry
        |
        |
        |
     FAKE_RA   <- sp_on_entry - sizeof(pt_regs) + PT_R1
        |
    ---------  <- sp_on_entry - sizeof(pt_regs)
    
    So if we want to get the &FAKE_RA we should get sp_on_entry first. In
    the unwinder_prologue case, we can get the sp_on_entry as state->sp,
    because we try to calculate each CFA and the ra saved address. But in
    the unwinder_guess case, we cannot get it because we do not try to
    calculate the CFA. Although LoongArch have not fixed frame, the $ra is
    saved at CFA - 8 in most cases, we can try guess, too. As we store the
    pc in state, we not need to dereference state->sp, too.
    Signed-off-by: default avatarJinyang He <hejinyang@loongson.cn>
    Signed-off-by: default avatarHuacai Chen <chenhuacai@loongson.cn>
    5bb8d344
unwind_prologue.c 4.79 KB