if (context->reg[fs->cfa_reg] == NULL) cfa = context->cfa; else cfa = (void *) (_Unwind_Ptr) _Unwind_GetGR (context, fs->cfa_reg);
cfa = (void *) (_Unwind_Ptr) _Unwind_GetGR (&orig_context, fs->cfa_reg);
uw_update_context_1 (struct _Unwind_Context *context, _Unwind_FrameState *fs){  struct _Unwind_Context orig_context = *context;  void *cfa;  long i;  /* Compute this frame's CFA.  */  switch (fs->cfa_how)    {    case CFA_REG_OFFSET:      /* Special handling here: Many machines do not use a frame pointer,	 and track the CFA only through offsets from the stack pointer from	 one frame to the next.  In this case, the stack pointer is never	 stored, so it has no saved address in the context.  What we do	 have is the CFA from the previous stack frame.  */      if (context->reg[fs->cfa_reg] == NULL)	cfa = context->cfa;      else	cfa = (void *) (_Unwind_Ptr) _Unwind_GetGR (context, fs->cfa_reg);      cfa += fs->cfa_offset;      break;    case CFA_EXP:      /* ??? No way of knowing what register number is the stack pointer	 to do the same sort of handling as above.  Assume that if the	 CFA calculation is so complicated as to require a stack program	 that this will not be a problem.  */      {	const unsigned char *exp = fs->cfa_exp;	_Unwind_Word len;	exp = read_uleb128 (exp, &len);	cfa = (void *) (_Unwind_Ptr)	  execute_stack_op (exp, exp + len, context, 0);	break;      }    default:      abort ();    }  context->cfa = cfa;  /* Compute the addresses of all registers saved in this frame.  */  for (i = 0; i < DWARF_FRAME_REGISTERS + 1; ++i)    switch (fs->regs.reg[i].how)      {      case REG_UNSAVED:	break;      case REG_SAVED_OFFSET:	context->reg[i] = cfa + fs->regs.reg[i].loc.offset;	break;      case REG_SAVED_REG:	context->reg[i] = orig_context.reg[fs->regs.reg[i].loc.reg];	break;      case REG_SAVED_EXP:	{	  const unsigned char *exp = fs->regs.reg[i].loc.exp;	  _Unwind_Word len;	  _Unwind_Ptr val;	  exp = read_uleb128 (exp, &len);	  val = execute_stack_op (exp, exp + len, &orig_context,				  (_Unwind_Ptr) cfa);	  context->reg[i] = (void *) val;	}	break;      }}