Lines Matching defs:fs

194   struct dwarf2_frame_state *fs = p;
196 dwarf2_frame_state_free_regs (fs->initial.prev);
197 dwarf2_frame_state_free_regs (fs->regs.prev);
198 xfree (fs->initial.reg);
199 xfree (fs->regs.reg);
200 xfree (fs);
273 struct dwarf2_frame_state *fs)
278 while (insn_ptr < insn_end && fs->pc <= pc)
285 fs->pc += (insn & 0x3f) * fs->code_align;
290 offset = utmp * fs->data_align;
291 dwarf2_frame_state_alloc_regs (&fs->regs, reg + 1);
292 fs->regs.reg[reg].how = DWARF2_FRAME_REG_SAVED_OFFSET;
293 fs->regs.reg[reg].loc.offset = offset;
297 gdb_assert (fs->initial.reg);
299 dwarf2_frame_state_alloc_regs (&fs->regs, reg + 1);
300 fs->regs.reg[reg] = fs->initial.reg[reg];
307 fs->pc = dwarf2_read_address (insn_ptr, insn_end, &bytes_read);
313 fs->pc += utmp * fs->code_align;
318 fs->pc += utmp * fs->code_align;
323 fs->pc += utmp * fs->code_align;
330 offset = utmp * fs->data_align;
331 dwarf2_frame_state_alloc_regs (&fs->regs, reg + 1);
332 fs->regs.reg[reg].how = DWARF2_FRAME_REG_SAVED_OFFSET;
333 fs->regs.reg[reg].loc.offset = offset;
337 gdb_assert (fs->initial.reg);
339 dwarf2_frame_state_alloc_regs (&fs->regs, reg + 1);
340 fs->regs.reg[reg] = fs->initial.reg[reg];
345 dwarf2_frame_state_alloc_regs (&fs->regs, reg + 1);
346 fs->regs.reg[reg].how = DWARF2_FRAME_REG_UNDEFINED;
351 dwarf2_frame_state_alloc_regs (&fs->regs, reg + 1);
352 fs->regs.reg[reg].how = DWARF2_FRAME_REG_SAME_VALUE;
358 dwarf2_frame_state_alloc_regs (&fs->regs, reg + 1);
359 fs->regs.reg[reg].how = DWARF2_FRAME_REG_SAVED_REG;
360 fs->regs.reg[reg].loc.reg = utmp;
368 *new_rs = fs->regs;
369 fs->regs.reg = dwarf2_frame_state_copy_regs (&fs->regs);
370 fs->regs.prev = new_rs;
376 struct dwarf2_frame_state_reg_info *old_rs = fs->regs.prev;
381 bad CFI data; mismatched DW_CFA_restore_state at 0x%s", paddr (fs->pc));
385 xfree (fs->regs.reg);
386 fs->regs = *old_rs;
393 insn_ptr = read_uleb128 (insn_ptr, insn_end, &fs->cfa_reg);
395 fs->cfa_offset = utmp;
396 fs->cfa_how = CFA_REG_OFFSET;
400 insn_ptr = read_uleb128 (insn_ptr, insn_end, &fs->cfa_reg);
401 fs->cfa_how = CFA_REG_OFFSET;
405 insn_ptr = read_uleb128 (insn_ptr, insn_end, &fs->cfa_offset);
413 insn_ptr = read_uleb128 (insn_ptr, insn_end, &fs->cfa_exp_len);
414 fs->cfa_exp = insn_ptr;
415 fs->cfa_how = CFA_EXP;
416 insn_ptr += fs->cfa_exp_len;
421 dwarf2_frame_state_alloc_regs (&fs->regs, reg + 1);
423 fs->regs.reg[reg].loc.exp = insn_ptr;
424 fs->regs.reg[reg].exp_len = utmp;
425 fs->regs.reg[reg].how = DWARF2_FRAME_REG_SAVED_EXP;
432 offset *= fs->data_align;
433 dwarf2_frame_state_alloc_regs (&fs->regs, reg + 1);
434 fs->regs.reg[reg].how = DWARF2_FRAME_REG_SAVED_OFFSET;
435 fs->regs.reg[reg].loc.offset = offset;
439 insn_ptr = read_uleb128 (insn_ptr, insn_end, &fs->cfa_reg);
441 fs->cfa_offset = offset * fs->data_align;
442 fs->cfa_how = CFA_REG_OFFSET;
447 fs->cfa_offset = offset * fs->data_align;
463 dwarf2_frame_state_free_regs (fs->regs.prev);
464 fs->regs.prev = NULL;
574 struct dwarf2_frame_state *fs;
585 fs = XMALLOC (struct dwarf2_frame_state);
586 memset (fs, 0, sizeof (struct dwarf2_frame_state));
587 old_chain = make_cleanup (dwarf2_frame_state_free, fs);
604 fs->pc = frame_unwind_address_in_block (next_frame);
607 fde = dwarf2_frame_find_fde (&fs->pc);
611 fs->data_align = fde->cie->data_alignment_factor;
612 fs->code_align = fde->cie->code_alignment_factor;
613 fs->retaddr_column = fde->cie->return_address_register;
617 fde->cie->end, next_frame, fs);
620 fs->initial = fs->regs;
621 fs->initial.reg = dwarf2_frame_state_copy_regs (&fs->regs);
624 execute_cfa_program (fde->instructions, fde->end, next_frame, fs);
627 switch (fs->cfa_how)
630 cache->cfa = read_reg (next_frame, fs->cfa_reg);
631 cache->cfa += fs->cfa_offset;
636 execute_stack_op (fs->cfa_exp, fs->cfa_exp_len, next_frame, 0);
661 for (column = 0; column < fs->regs.num_regs; column++)
681 if (fs->regs.reg[column].how == DWARF2_FRAME_REG_UNSPECIFIED)
684 paddr (fs->pc));
686 cache->reg[regnum] = fs->regs.reg[column];
699 &fs->regs.reg[fs->retaddr_column];
708 if (fs->retaddr_column < fs->regs.num_regs
714 cache->reg[regnum].loc.reg = fs->retaddr_column;