Hey Konstantin,

Could you expand on the circumstances which require this? The
frame-based unwinder code just above checks for null RBP and the
dwarf-based one should not require the check -- see around
src/dwarf/Gparser.c comment "DWARF spec says undefined return address
location means end of stack."

Regards,
Lassi

On Mon, Sep 17, 2012 at 4:39 PM, Konstantin Belousov <[email protected]> wrote:
> From: Konstantin Belousov <[email protected]>
>
> ---
>  src/x86_64/Gstep.c | 6 ++++++
>  1 file changed, 6 insertions(+)
>
> diff --git a/src/x86_64/Gstep.c b/src/x86_64/Gstep.c
> index e05fcae..9d8c2cf 100644
> --- a/src/x86_64/Gstep.c
> +++ b/src/x86_64/Gstep.c
> @@ -196,6 +196,12 @@ unw_step (unw_cursor_t *cursor)
>            c->dwarf.loc[RIP] = rip_loc;
>         }
>
> +      if (DWARF_IS_NULL_LOC (c->dwarf.loc[RBP]))
> +        {
> +        ret = 0;
> +        Debug (2, "NULL %rbp loc, returning %d\n", ret);
> +        return ret;
> +        }
>        c->dwarf.ret_addr_column = RIP;
>
>        if (!DWARF_IS_NULL_LOC (c->dwarf.loc[RIP]))
> --
> 1.7.11.5
>
>
> _______________________________________________
> Libunwind-devel mailing list
> [email protected]
> https://lists.nongnu.org/mailman/listinfo/libunwind-devel

_______________________________________________
Libunwind-devel mailing list
[email protected]
https://lists.nongnu.org/mailman/listinfo/libunwind-devel

Reply via email to