in Source/PLCrashAsyncCompactUnwindEncoding.c [593:659]
static plcrash_error_t plcrash_async_map_register_name (uint32_t orig_reg, plcrash_regnum_t *result, cpu_type_t cpu_type) {
if (cpu_type == CPU_TYPE_X86) {
switch (orig_reg) {
case UNWIND_X86_REG_NONE:
*result = PLCRASH_REG_INVALID;
return PLCRASH_ESUCCESS;
case UNWIND_X86_REG_EBX:
*result = PLCRASH_X86_EBX;
return PLCRASH_ESUCCESS;
case UNWIND_X86_REG_ECX:
*result = PLCRASH_X86_ECX;
return PLCRASH_ESUCCESS;
case UNWIND_X86_REG_EDX:
*result = PLCRASH_X86_EDX;
return PLCRASH_ESUCCESS;
case UNWIND_X86_REG_EDI:
*result = PLCRASH_X86_EDI;
return PLCRASH_ESUCCESS;
case UNWIND_X86_REG_ESI:
*result = PLCRASH_X86_ESI;
return PLCRASH_ESUCCESS;
case UNWIND_X86_REG_EBP:
*result = PLCRASH_X86_EBP;
return PLCRASH_ESUCCESS;
default:
PLCF_DEBUG("Requested register mapping for unknown register %" PRId32, orig_reg);
return PLCRASH_EINVAL;
}
} else if (cpu_type == CPU_TYPE_X86_64) {
switch (orig_reg) {
case UNWIND_X86_64_REG_NONE:
*result = PLCRASH_REG_INVALID;
return PLCRASH_ESUCCESS;
case UNWIND_X86_64_REG_RBX:
*result = PLCRASH_X86_64_RBX;
return PLCRASH_ESUCCESS;
case UNWIND_X86_64_REG_R12:
*result = PLCRASH_X86_64_R12;
return PLCRASH_ESUCCESS;
case UNWIND_X86_64_REG_R13:
*result = PLCRASH_X86_64_R13;
return PLCRASH_ESUCCESS;
case UNWIND_X86_64_REG_R14:
*result = PLCRASH_X86_64_R14;
return PLCRASH_ESUCCESS;
case UNWIND_X86_64_REG_R15:
*result = PLCRASH_X86_64_R15;
return PLCRASH_ESUCCESS;
case UNWIND_X86_64_REG_RBP:
*result = PLCRASH_X86_64_RBP;
return PLCRASH_ESUCCESS;
default:
PLCF_DEBUG("Requested register mapping for unknown register %" PRId32, orig_reg);
return PLCRASH_EINVAL;
}
} else {
PLCF_DEBUG("Requested register mapping for unknown cpu type %" PRIu32, cpu_type);
return PLCRASH_ENOTSUP;
}
}