in Crashlytics/Crashlytics/Unwind/Dwarf/FIRCLSDwarfExpressionMachine.c [191:299]
bool FIRCLSDwarfExpressionMachineExecuteNextOpcode(FIRCLSDwarfExpressionMachine *machine) {
if (!FIRCLSIsValidPointer(machine)) {
return false;
}
const uint8_t opcode = FIRCLSParseUint8AndAdvance(&machine->dataCursor);
bool success = false;
switch (opcode) {
case DW_OP_deref:
success = FIRCLSDwarfExpressionMachineExecute_deref(machine);
break;
case DW_OP_dup:
success = FIRCLSDwarfExpressionMachineExecute_dup(machine);
break;
case DW_OP_and:
success = FIRCLSDwarfExpressionMachineExecute_and(machine);
break;
case DW_OP_plus:
success = FIRCLSDwarfExpressionMachineExecute_plus(machine);
break;
case DW_OP_swap:
success = FIRCLSDwarfExpressionMachineExecute_swap(machine);
break;
case DW_OP_plus_uconst:
success = FIRCLSDwarfExpressionMachineExecute_plus_uconst(machine);
break;
case DW_OP_ne:
success = FIRCLSDwarfExpressionMachineExecute_ne(machine);
break;
case DW_OP_lit0:
case DW_OP_lit1:
case DW_OP_lit2:
case DW_OP_lit3:
case DW_OP_lit4:
case DW_OP_lit5:
case DW_OP_lit6:
case DW_OP_lit7:
case DW_OP_lit8:
case DW_OP_lit9:
case DW_OP_lit10:
case DW_OP_lit11:
case DW_OP_lit12:
case DW_OP_lit13:
case DW_OP_lit14:
case DW_OP_lit15:
case DW_OP_lit16:
case DW_OP_lit17:
case DW_OP_lit18:
case DW_OP_lit19:
case DW_OP_lit20:
case DW_OP_lit21:
case DW_OP_lit22:
case DW_OP_lit23:
case DW_OP_lit24:
case DW_OP_lit25:
case DW_OP_lit26:
case DW_OP_lit27:
case DW_OP_lit28:
case DW_OP_lit29:
case DW_OP_lit30:
case DW_OP_lit31:
success = FIRCLSDwarfExpressionMachineExecute_litN(machine, opcode);
break;
case DW_OP_breg0:
case DW_OP_breg1:
case DW_OP_breg2:
case DW_OP_breg3:
case DW_OP_breg4:
case DW_OP_breg5:
case DW_OP_breg6:
case DW_OP_breg7:
case DW_OP_breg8:
case DW_OP_breg9:
case DW_OP_breg10:
case DW_OP_breg11:
case DW_OP_breg12:
case DW_OP_breg13:
case DW_OP_breg14:
case DW_OP_breg15:
case DW_OP_breg16:
case DW_OP_breg17:
case DW_OP_breg18:
case DW_OP_breg19:
case DW_OP_breg20:
case DW_OP_breg21:
case DW_OP_breg22:
case DW_OP_breg23:
case DW_OP_breg24:
case DW_OP_breg25:
case DW_OP_breg26:
case DW_OP_breg27:
case DW_OP_breg28:
case DW_OP_breg29:
case DW_OP_breg30:
case DW_OP_breg31:
success = FIRCLSDwarfExpressionMachineExecute_bregN(machine, opcode);
break;
case DW_OP_deref_size:
success = FIRCLSDwarfExpressionMachineExecute_deref_size(machine);
break;
default:
FIRCLSSDKLog("Error: Unrecognized DWARF expression opcode 0x%x\n", opcode);
return false;
}
return success;
}