mirror of
https://github.com/tobast/libunwind-eh_elf.git
synced 2024-11-26 17:17:39 +01:00
Detect end of stack in x86-64 rbp-based walk.
This commit is contained in:
parent
92cc7fd78a
commit
d4fbc8326a
1 changed files with 7 additions and 1 deletions
|
@ -116,6 +116,11 @@ unw_step (unw_cursor_t *cursor)
|
||||||
c->dwarf.loc[RIP] = DWARF_LOC (c->dwarf.cfa, 0);
|
c->dwarf.loc[RIP] = DWARF_LOC (c->dwarf.cfa, 0);
|
||||||
c->dwarf.cfa += 8;
|
c->dwarf.cfa += 8;
|
||||||
}
|
}
|
||||||
|
else if (DWARF_IS_NULL_LOC (c->dwarf.loc[RBP]))
|
||||||
|
{
|
||||||
|
for (i = 0; i < DWARF_NUM_PRESERVED_REGS; ++i)
|
||||||
|
c->dwarf.loc[i] = DWARF_NULL_LOC;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
unw_word_t rbp;
|
unw_word_t rbp;
|
||||||
|
@ -123,7 +128,8 @@ unw_step (unw_cursor_t *cursor)
|
||||||
ret = dwarf_get (&c->dwarf, c->dwarf.loc[RBP], &rbp);
|
ret = dwarf_get (&c->dwarf, c->dwarf.loc[RBP], &rbp);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
{
|
{
|
||||||
Debug (2, "returning %d\n", ret);
|
Debug (2, "returning %d [RBP=0x%lx]\n", ret,
|
||||||
|
DWARF_GET_LOC (c->dwarf.loc[RBP]));
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue