Changeset 59062 in vbox
- Timestamp:
- Dec 8, 2015 5:22:27 PM (9 years ago)
- File:
-
- 1 edited
-
trunk/src/VBox/Debugger/DBGCEmulateCodeView.cpp (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Debugger/DBGCEmulateCodeView.cpp
r58903 r59062 3953 3953 3954 3954 3955 typedef enum 3956 { 3957 kDbgcSxEventKind_Plain, 3958 kDbgcSxEventKind_Interrupt 3959 } DBGCSXEVENTKIND; 3960 static const struct 3961 { 3962 DBGFEVENTTYPE enmType; 3963 const char *pszName; 3964 DBGCSXEVENTKIND enmKind; 3965 bool fDefault; 3966 } g_aSxEvents[] = 3967 { 3968 { DBGFEVENT_INTERRUPT_HARDWARE, "hwint", kDbgcSxEventKind_Interrupt, false }, 3969 { DBGFEVENT_INTERRUPT_SOFTWARE, "swint", kDbgcSxEventKind_Interrupt, false }, 3970 { DBGFEVENT_TRIPLE_FAULT, "triplefault", kDbgcSxEventKind_Plain, true }, 3971 { DBGFEVENT_XCPT_DE, "de", kDbgcSxEventKind_Plain, false }, 3972 { DBGFEVENT_XCPT_DB, "db", kDbgcSxEventKind_Plain, false }, 3973 { DBGFEVENT_XCPT_02, "xcpt02", kDbgcSxEventKind_Plain, false }, 3974 { DBGFEVENT_XCPT_BP, "bp", kDbgcSxEventKind_Plain, false }, 3975 { DBGFEVENT_XCPT_OF, "of", kDbgcSxEventKind_Plain, false }, 3976 { DBGFEVENT_XCPT_BR, "br", kDbgcSxEventKind_Plain, false }, 3977 { DBGFEVENT_XCPT_UD, "ud", kDbgcSxEventKind_Plain, false }, 3978 { DBGFEVENT_XCPT_NM, "nm", kDbgcSxEventKind_Plain, false }, 3979 { DBGFEVENT_XCPT_DF, "df", kDbgcSxEventKind_Plain, false }, 3980 { DBGFEVENT_XCPT_09, "xcpt09", kDbgcSxEventKind_Plain, false }, 3981 { DBGFEVENT_XCPT_TS, "ts", kDbgcSxEventKind_Plain, false }, 3982 { DBGFEVENT_XCPT_NP, "np", kDbgcSxEventKind_Plain, false }, 3983 { DBGFEVENT_XCPT_SS, "ss", kDbgcSxEventKind_Plain, false }, 3984 { DBGFEVENT_XCPT_GP, "gp", kDbgcSxEventKind_Plain, false }, 3985 { DBGFEVENT_XCPT_PF, "pf", kDbgcSxEventKind_Plain, false }, 3986 { DBGFEVENT_XCPT_0f, "xcpt0f", kDbgcSxEventKind_Plain, false }, 3987 { DBGFEVENT_XCPT_MF, "mf", kDbgcSxEventKind_Plain, false }, 3988 { DBGFEVENT_XCPT_AC, "ac", kDbgcSxEventKind_Plain, false }, 3989 { DBGFEVENT_XCPT_MC, "mc", kDbgcSxEventKind_Plain, false }, 3990 { DBGFEVENT_XCPT_XF, "xf", kDbgcSxEventKind_Plain, false }, 3991 { DBGFEVENT_XCPT_VE, "ve", kDbgcSxEventKind_Plain, false }, 3992 { DBGFEVENT_XCPT_15, "xcpt15", kDbgcSxEventKind_Plain, false }, 3993 { DBGFEVENT_XCPT_16, "xcpt16", kDbgcSxEventKind_Plain, false }, 3994 { DBGFEVENT_XCPT_17, "xcpt17", kDbgcSxEventKind_Plain, false }, 3995 { DBGFEVENT_XCPT_18, "xcpt18", kDbgcSxEventKind_Plain, false }, 3996 { DBGFEVENT_XCPT_19, "xcpt19", kDbgcSxEventKind_Plain, false }, 3997 { DBGFEVENT_XCPT_1a, "xcpt1a", kDbgcSxEventKind_Plain, false }, 3998 { DBGFEVENT_XCPT_1b, "xcpt1b", kDbgcSxEventKind_Plain, false }, 3999 { DBGFEVENT_XCPT_1c, "xcpt1c", kDbgcSxEventKind_Plain, false }, 4000 { DBGFEVENT_XCPT_1d, "xcpt1d", kDbgcSxEventKind_Plain, false }, 4001 { DBGFEVENT_XCPT_SX, "sx", kDbgcSxEventKind_Plain, false }, 4002 { DBGFEVENT_XCPT_1f, "xcpt1f", kDbgcSxEventKind_Plain, false }, 4003 { DBGFEVENT_INSTR_HALT, "halt", kDbgcSxEventKind_Plain, false }, 4004 #if 0 /** @todo later */ 4005 { DBGFEVENT_INSTR_MWAIT, "", 4006 { DBGFEVENT_INSTR_MONITOR, "", 4007 { DBGFEVENT_INSTR_CPUID, "", 4008 { DBGFEVENT_INSTR_INVD, "", 4009 { DBGFEVENT_INSTR_WBINVD, "", 4010 { DBGFEVENT_INSTR_INVLPG, "", 4011 { DBGFEVENT_INSTR_RDTSC, "", 4012 { DBGFEVENT_INSTR_RDTSCP, "", 4013 { DBGFEVENT_INSTR_RDPMC, "", 4014 { DBGFEVENT_INSTR_RDMSR, "", 4015 { DBGFEVENT_INSTR_WRMSR, "", 4016 { DBGFEVENT_INSTR_CRX_READ, "", 4017 { DBGFEVENT_INSTR_CRX_WRITE, "", 4018 { DBGFEVENT_INSTR_DRX_READ, "", 4019 { DBGFEVENT_INSTR_DRX_WRITE, "", 4020 { DBGFEVENT_INSTR_PAUSE, "", 4021 { DBGFEVENT_INSTR_XSETBV, "", 4022 { DBGFEVENT_INSTR_SIDT, "", 4023 { DBGFEVENT_INSTR_LIDT, "", 4024 { DBGFEVENT_INSTR_SGDT, "", 4025 { DBGFEVENT_INSTR_LGDT, "", 4026 { DBGFEVENT_INSTR_SLDT, "", 4027 { DBGFEVENT_INSTR_LLDT, "", 4028 { DBGFEVENT_INSTR_STR, "", 4029 { DBGFEVENT_INSTR_LTR, "", 4030 { DBGFEVENT_INSTR_GETSEC, "", 4031 { DBGFEVENT_INSTR_RSM, "", 4032 { DBGFEVENT_INSTR_RDRAND, "", 4033 { DBGFEVENT_INSTR_RDSEED, "", 4034 { DBGFEVENT_INSTR_XSAVES, "", 4035 { DBGFEVENT_INSTR_XRSTORS, "", 4036 { DBGFEVENT_INSTR_VMM_CALL, "", 4037 { DBGFEVENT_INSTR_VMX_VMCLEAR "", 4038 { DBGFEVENT_INSTR_VMX_VMLAUNCH, "", 4039 { DBGFEVENT_INSTR_VMX_VMPTRLD, "", 4040 { DBGFEVENT_INSTR_VMX_VMPTRST, "", 4041 { DBGFEVENT_INSTR_VMX_VMREAD, "", 4042 { DBGFEVENT_INSTR_VMX_VMRESUME, "", 4043 { DBGFEVENT_INSTR_VMX_VMWRITE, "", 4044 { DBGFEVENT_INSTR_VMX_VMXOFF, "", 4045 { DBGFEVENT_INSTR_VMX_VMXON, "", 4046 { DBGFEVENT_INSTR_VMX_VMFUNC, "", 4047 { DBGFEVENT_INSTR_VMX_INVEPT, "", 4048 { DBGFEVENT_INSTR_VMX_INVVPID, "", 4049 { DBGFEVENT_INSTR_VMX_INVPCID, "", 4050 { DBGFEVENT_INSTR_SVM_VMRUN "", 4051 { DBGFEVENT_INSTR_SVM_VMLOAD, "", 4052 { DBGFEVENT_INSTR_SVM_VMSAVE, "", 4053 { DBGFEVENT_INSTR_SVM_STGI, "", 4054 { DBGFEVENT_INSTR_SVM_CLGI, "", 4055 { DBGFEVENT_EXIT_TASK_SWITCH "", 4056 { DBGFEVENT_EXIT_HALT, "", 4057 { DBGFEVENT_EXIT_MWAIT, "", 4058 { DBGFEVENT_EXIT_MONITOR, "", 4059 { DBGFEVENT_EXIT_CPUID, "", 4060 { DBGFEVENT_EXIT_INVD, "", 4061 { DBGFEVENT_EXIT_WBINVD, "", 4062 { DBGFEVENT_EXIT_INVLPG, "", 4063 { DBGFEVENT_EXIT_RDTSC, "", 4064 { DBGFEVENT_EXIT_RDTSCP, "", 4065 { DBGFEVENT_EXIT_RDPMC, "", 4066 { DBGFEVENT_EXIT_RDMSR, "", 4067 { DBGFEVENT_EXIT_WRMSR, "", 4068 { DBGFEVENT_EXIT_CRX_READ, "", 4069 { DBGFEVENT_EXIT_CRX_WRITE, "", 4070 { DBGFEVENT_EXIT_DRX_READ, "", 4071 { DBGFEVENT_EXIT_DRX_WRITE, "", 4072 { DBGFEVENT_EXIT_PAUSE, "", 4073 { DBGFEVENT_EXIT_XSETBV, "", 4074 { DBGFEVENT_EXIT_SIDT, "", 4075 { DBGFEVENT_EXIT_LIDT, "", 4076 { DBGFEVENT_EXIT_SGDT, "", 4077 { DBGFEVENT_EXIT_LGDT, "", 4078 { DBGFEVENT_EXIT_SLDT, "", 4079 { DBGFEVENT_EXIT_LLDT, "", 4080 { DBGFEVENT_EXIT_STR, "", 4081 { DBGFEVENT_EXIT_LTR, "", 4082 { DBGFEVENT_EXIT_GETSEC, "", 4083 { DBGFEVENT_EXIT_RSM, "", 4084 { DBGFEVENT_EXIT_RDRAND, "", 4085 { DBGFEVENT_EXIT_RDSEED, "", 4086 { DBGFEVENT_EXIT_XSAVES, "", 4087 { DBGFEVENT_EXIT_XRSTORS, "", 4088 { DBGFEVENT_EXIT_VMM_CALL, "", 4089 { DBGFEVENT_EXIT_VMX_VMCLEAR "", 4090 { DBGFEVENT_EXIT_VMX_VMLAUNCH, "", 4091 { DBGFEVENT_EXIT_VMX_VMPTRLD, "", 4092 { DBGFEVENT_EXIT_VMX_VMPTRST, "", 4093 { DBGFEVENT_EXIT_VMX_VMREAD, "", 4094 { DBGFEVENT_EXIT_VMX_VMRESUME, "", 4095 { DBGFEVENT_EXIT_VMX_VMWRITE, "", 4096 { DBGFEVENT_EXIT_VMX_VMXOFF, "", 4097 { DBGFEVENT_EXIT_VMX_VMXON, "", 4098 { DBGFEVENT_EXIT_VMX_VMFUNC, "", 4099 { DBGFEVENT_EXIT_VMX_INVEPT, "", 4100 { DBGFEVENT_EXIT_VMX_INVVPID, "", 4101 { DBGFEVENT_EXIT_VMX_INVPCID, "", 4102 { DBGFEVENT_EXIT_VMX_EPT_VIOLATION, "", 4103 { DBGFEVENT_EXIT_VMX_EPT_MISCONFIG, "", 4104 { DBGFEVENT_EXIT_VMX_VAPIC_ACCESS, "", 4105 { DBGFEVENT_EXIT_VMX_VAPIC_WRITE, "", 4106 { DBGFEVENT_EXIT_SVM_VMRUN "", 4107 { DBGFEVENT_EXIT_SVM_VMLOAD, "", 4108 { DBGFEVENT_EXIT_SVM_VMSAVE, "", 4109 { DBGFEVENT_EXIT_SVM_STGI, "", 4110 { DBGFEVENT_EXIT_SVM_CLGI, "", 4111 { DBGFEVENT_IOPORT_UNASSIGNED, "", 4112 { DBGFEVENT_IOPORT_UNUSED, "", 4113 { DBGFEVENT_MEMORY_UNASSIGNED, "", 4114 { DBGFEVENT_MEMORY_ROM_WRITE, "", 4115 #endif 4116 }; 4117 4118 3955 4119 /** 3956 4120 * @callback_method_impl{FNDBGCCMD, The 'sx[eni-]' commands.} … … 3958 4122 static DECLCALLBACK(int) dbgcCmdEventCtrl(PCDBGCCMD pCmd, PDBGCCMDHLP pCmdHlp, PUVM pUVM, PCDBGCVAR paArgs, unsigned cArgs) 3959 4123 { 3960 return VERR_NOT_IMPLEMENTED; 4124 /* 4125 * Figure out which command this is. 4126 */ 4127 enum 4128 { 4129 kEventEnable, 4130 kEventNotify, 4131 kEventIgnore, 4132 kEventChangeCmd 4133 } enmSubOp; 4134 switch (pCmd->pszCmd[2]) 4135 { 4136 case 'e': enmSubOp = kEventEnable; break; 4137 case 'n': enmSubOp = kEventNotify; break; 4138 case '-': enmSubOp = kEventChangeCmd; break; 4139 case 'i': enmSubOp = kEventIgnore; break; 4140 default: 4141 return pCmdHlp->pfnVBoxError(pCmdHlp, VERR_INVALID_PARAMETER, "pszCmd=%s\n", pCmd->pszCmd); 4142 } 4143 4144 /* 4145 * Command option. 4146 */ 4147 unsigned iArg = 0; 4148 const char *pszCommand = NULL; 4149 if ( cArgs >= iArg + 2 4150 && paArgs[iArg].enmType == DBGCVAR_TYPE_STRING 4151 && paArgs[iArg + 1].enmType == DBGCVAR_TYPE_STRING 4152 && strcmp(paArgs[iArg].u.pszString, "-c") == 0) 4153 { 4154 pszCommand = paArgs[iArg + 1].u.pszString; 4155 iArg += 2; 4156 if ( enmSubOp != kEventEnable 4157 && enmSubOp != kEventChangeCmd) 4158 return pCmdHlp->pfnVBoxError(pCmdHlp, VERR_INVALID_PARAMETER, "Only the 'sxe' and 'sxc' command takes '-c cmds'.\n"); 4159 } 4160 4161 /* 4162 * The remaining arguments are event specifiers to which the operation should be applied. 4163 */ 4164 for (; iArg < cArgs; iArg++) 4165 { 4166 DBGC_CMDHLP_ASSERT_PARSER_RET(pCmdHlp, pCmd, iArg, paArgs[iArg].enmType == DBGCVAR_TYPE_STRING 4167 || paArgs[iArg].enmType == DBGCVAR_TYPE_SYMBOL); 4168 4169 } 4170 4171 return VINF_SUCCESS; 3961 4172 } 3962 4173
Note:
See TracChangeset
for help on using the changeset viewer.

