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