in Crashlytics/Crashlytics/Unwind/FIRCLSUnwind_x86.c [212:304]
bool FIRCLSDwarfUnwindSetRegisterValue(FIRCLSThreadContext* registers,
uint64_t num,
uintptr_t value) {
switch (num) {
#if CLS_CPU_X86_64
case CLS_DWARF_X86_64_RAX:
registers->__ss.__rax = value;
return true;
case CLS_DWARF_X86_64_RDX:
registers->__ss.__rdx = value;
return true;
case CLS_DWARF_X86_64_RCX:
registers->__ss.__rcx = value;
return true;
case CLS_DWARF_X86_64_RBX:
registers->__ss.__rbx = value;
return true;
case CLS_DWARF_X86_64_RSI:
registers->__ss.__rsi = value;
return true;
case CLS_DWARF_X86_64_RDI:
registers->__ss.__rdi = value;
return true;
case CLS_DWARF_X86_64_RBP:
registers->__ss.__rbp = value;
return true;
case CLS_DWARF_X86_64_RSP:
registers->__ss.__rsp = value;
return true;
case CLS_DWARF_X86_64_R8:
registers->__ss.__r8 = value;
return true;
case CLS_DWARF_X86_64_R9:
registers->__ss.__r9 = value;
return true;
case CLS_DWARF_X86_64_R10:
registers->__ss.__r10 = value;
return true;
case CLS_DWARF_X86_64_R11:
registers->__ss.__r11 = value;
return true;
case CLS_DWARF_X86_64_R12:
registers->__ss.__r12 = value;
return true;
case CLS_DWARF_X86_64_R13:
registers->__ss.__r13 = value;
return true;
case CLS_DWARF_X86_64_R14:
registers->__ss.__r14 = value;
return true;
case CLS_DWARF_X86_64_R15:
registers->__ss.__r15 = value;
return true;
case CLS_DWARF_X86_64_RET_ADDR:
registers->__ss.__rip = value;
return true;
#elif CLS_CPU_I386
case CLS_DWARF_X86_EAX:
registers->__ss.__eax = value;
return true;
case CLS_DWARF_X86_ECX:
registers->__ss.__ecx = value;
return true;
case CLS_DWARF_X86_EDX:
registers->__ss.__edx = value;
return true;
case CLS_DWARF_X86_EBX:
registers->__ss.__ebx = value;
return true;
case CLS_DWARF_X86_EBP:
registers->__ss.__ebp = value;
return true;
case CLS_DWARF_X86_ESP:
registers->__ss.__esp = value;
return true;
case CLS_DWARF_X86_ESI:
registers->__ss.__esi = value;
return true;
case CLS_DWARF_X86_EDI:
registers->__ss.__edi = value;
return true;
case CLS_DWARF_X86_RET_ADDR:
registers->__ss.__eip = value;
return true;
#endif
default:
break;
}
FIRCLSSDKLog("Unrecognized set register number %llu\n", num);
return false;
}