Lines Matching defs:state

1 /* Get previous frame state for an existing frame state.
48 __libdwfl_frame_reg_get (Dwfl_Frame *state, unsigned regno, Dwarf_Addr *val)
50 Ebl *ebl = state->thread->process->ebl;
55 if ((state->regs_set[regno / sizeof (*state->regs_set) / 8]
56 & ((uint64_t) 1U << (regno % (sizeof (*state->regs_set) * 8)))) == 0)
59 *val = state->regs[regno];
65 __libdwfl_frame_reg_set (Dwfl_Frame *state, unsigned regno, Dwarf_Addr val)
67 Ebl *ebl = state->thread->process->ebl;
75 state->regs_set[regno / sizeof (*state->regs_set) / 8] |=
76 ((uint64_t) 1U << (regno % (sizeof (*state->regs_set) * 8)));
77 state->regs[regno] = val;
136 expr_eval (Dwfl_Frame *state, Dwarf_Frame *frame, const Dwarf_Op *ops,
139 Dwfl_Process *process = state->thread->process;
203 if (INTUSE (dwfl_frame_reg) (state, op->atom - DW_OP_reg0, &val1) != 0
211 if (INTUSE (dwfl_frame_reg) (state, op->number, &val1) != 0 || ! push (val1))
218 if (INTUSE (dwfl_frame_reg) (state, op->atom - DW_OP_breg0, &val1) != 0)
231 if (INTUSE (dwfl_frame_reg) (state, op->number, &val1) != 0)
459 || ! expr_eval (state, NULL, cfa_ops, cfa_nops, &cfa, bias)
500 new_unwound (Dwfl_Frame *state)
502 assert (state->unwound == NULL);
503 Dwfl_Thread *thread = state->thread;
512 state->unwound = unwound;
528 handle_cfi (Dwfl_Frame *state, Dwarf_Addr pc, Dwarf_CFI *cfi, Dwarf_Addr bias)
537 Dwfl_Frame *unwound = new_unwound (state);
545 Dwfl_Thread *thread = state->thread;
583 if (INTUSE (dwfl_frame_reg) (state, regno, &regval) != 0)
592 else if (! expr_eval (state, frame, reg_ops, reg_nops, &regval, bias))
668 Dwfl_Frame *state = arg;
669 Dwfl_Frame *unwound = state->unwound;
688 Dwfl_Frame *state = arg;
691 if (INTUSE (dwfl_frame_reg) (state, firstreg++, regs++) != 0)
699 Dwfl_Frame *state = arg;
700 Dwfl_Thread *thread = state->thread;
708 __libdwfl_frame_unwind (Dwfl_Frame *state)
710 if (state->unwound)
715 bool ok = INTUSE(dwfl_frame_pc) (state, &pc, NULL);
720 if (! state->initial_frame && ! state->signal_frame)
722 Dwfl_Module *mod = INTUSE(dwfl_addrmodule) (state->thread->process->dwfl, pc);
731 handle_cfi (state, pc - bias, cfi_eh, bias);
732 if (state->unwound)
738 handle_cfi (state, pc - bias, cfi_dwarf, bias);
739 if (state->unwound)
743 assert (state->unwound == NULL);
744 Dwfl_Thread *thread = state->thread;
747 if (new_unwound (state) == NULL)
752 state->unwound->pc_state = DWFL_FRAME_STATE_PC_UNDEFINED;
755 if (! ebl_unwind (ebl, pc, setfunc, getfunc, readfunc, state, &signal_frame))
759 assert (state->unwound->unwound == NULL);
760 free (state->unwound);
761 state->unwound = NULL;
765 assert (state->unwound->pc_state == DWFL_FRAME_STATE_PC_SET);
766 state->unwound->signal_frame = signal_frame;