mirror of
https://github.com/tobast/libunwind-eh_elf.git
synced 2025-01-23 00:30:29 +01:00
(rbs_cover_and_flush): Also update c->rnat_loc as needed.
(Logical change 1.49)
This commit is contained in:
parent
b8c178177a
commit
d55a7f7dd4
1 changed files with 6 additions and 2 deletions
|
@ -199,9 +199,12 @@ rbs_cover_and_flush (struct cursor *c, unw_word_t nregs)
|
|||
curr = c->rbs_curr;
|
||||
dst_rbs = c->rbs_area + curr;
|
||||
final_bsp = ia64_rse_skip_regs (c->bsp, nregs); /* final bsp */
|
||||
if (likely (final_bsp <= dst_rbs->end))
|
||||
dst_rnat_loc = ia64_rse_rnat_addr (ia64_rse_skip_regs (c->bsp, nregs - 1));
|
||||
if (likely (final_bsp <= dst_rbs->end || curr == left_edge))
|
||||
{
|
||||
c->bsp = final_bsp;
|
||||
if (dst_rnat_loc < dst_rbs->end)
|
||||
c->rnat_loc = dst_rnat_loc;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -256,7 +259,7 @@ rbs_cover_and_flush (struct cursor *c, unw_word_t nregs)
|
|||
dst_bsp += 8;
|
||||
if (ia64_rse_is_rnat_slot (dst_bsp))
|
||||
{
|
||||
if ((ret = ia64_put (c, dst_rnat_loc, dst_rnat)) < 0)
|
||||
if ((ret = ia64_put (c, dst_bsp, dst_rnat)) < 0)
|
||||
return ret;
|
||||
|
||||
dst_bsp += 8;
|
||||
|
@ -267,5 +270,6 @@ rbs_cover_and_flush (struct cursor *c, unw_word_t nregs)
|
|||
}
|
||||
}
|
||||
c->bsp = dst_bsp;
|
||||
c->rnat_loc = dst_rnat_loc;
|
||||
return ia64_put (c, dst_rnat_loc, dst_rnat);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue