mirror of
https://github.com/tobast/libunwind-eh_elf.git
synced 2024-12-23 20:03:43 +01:00
(access_nat): Fix that NaT-location calculation for the case where the NaT
is on the memory stack. (Logical change 1.178)
This commit is contained in:
parent
8d735e0c76
commit
c4d1b80bfe
1 changed files with 6 additions and 1 deletions
|
@ -24,6 +24,7 @@ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|||
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
|
||||
|
||||
#include <assert.h>
|
||||
#include <stddef.h>
|
||||
|
||||
#include "offsets.h"
|
||||
#include "regs.h"
|
||||
|
@ -281,7 +282,11 @@ access_nat (struct cursor *c, ia64_loc_t loc, ia64_loc_t reg_loc,
|
|||
|
||||
if (IA64_IS_MEMSTK_NAT (loc))
|
||||
{
|
||||
nat_loc = IA64_LOC_ADDR (IA64_GET_ADDR (loc), 0);
|
||||
nat_loc = loc;
|
||||
if (IA64_IS_NULL_LOC (nat_loc))
|
||||
/* There was no primary UNaT, implying that the NaT bits are
|
||||
still in ar.unat. This can happen for leaf-routines. */
|
||||
nat_loc = c->loc[IA64_REG_UNAT];
|
||||
assert (!IA64_IS_REG_LOC (reg_loc));
|
||||
mask = (unw_word_t) 1 << ia64_rse_slot_num (IA64_GET_ADDR (reg_loc));
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue