31 enum vmi1__TargetTypeT type,
35 case vmi1__TargetTypeT__none:
39 case vmi1__TargetTypeT__ptrace:
43 case vmi1__TargetTypeT__xen:
47 case vmi1__TargetTypeT__gdb:
51 case vmi1__TargetTypeT__osProcess:
55 case vmi1__TargetTypeT__php:
60 verror(
"unknown TargetTypeT %d\n",type);
65 enum vmi1__TargetTypeT
69 enum vmi1__TargetTypeT *out) {
73 *out = vmi1__TargetTypeT__none;
74 return vmi1__TargetTypeT__none;
77 *out = vmi1__TargetTypeT__ptrace;
78 return vmi1__TargetTypeT__ptrace;
81 *out = vmi1__TargetTypeT__xen;
82 return vmi1__TargetTypeT__xen;
85 *out = vmi1__TargetTypeT__gdb;
86 return vmi1__TargetTypeT__gdb;
89 *out = vmi1__TargetTypeT__osProcess;
90 return vmi1__TargetTypeT__osProcess;
93 *out = vmi1__TargetTypeT__php;
94 return vmi1__TargetTypeT__php;
96 verror(
"unknown target_type_t %d\n",type);
97 return vmi1__TargetTypeT__none;
103 enum vmi1__TargetModeT mode,
107 case vmi1__TargetModeT__none:
111 case vmi1__TargetModeT__live:
115 case vmi1__TargetModeT__replay:
119 case vmi1__TargetModeT__record:
124 verror(
"unknown TargetModeT %d\n",mode);
129 enum vmi1__TargetModeT
133 enum vmi1__TargetModeT *out) {
137 *out = vmi1__TargetModeT__none;
138 return vmi1__TargetModeT__none;
141 *out = vmi1__TargetModeT__live;
142 return vmi1__TargetModeT__live;
145 *out = vmi1__TargetModeT__replay;
146 return vmi1__TargetModeT__replay;
149 *out = vmi1__TargetModeT__record;
150 return vmi1__TargetModeT__record;
152 verror(
"unknown target_mode_t %d\n",mode);
153 return vmi1__TargetModeT__none;
159 enum vmi1__ThreadBPModeT mode,
163 case vmi1__ThreadBPModeT__strict:
167 case vmi1__ThreadBPModeT__semiStrict:
171 case vmi1__ThreadBPModeT__loose:
176 verror(
"unknown ThreadBPModeT %d; returning STRICT!\n",mode);
181 enum vmi1__ThreadBPModeT
185 enum vmi1__ThreadBPModeT *out) {
189 *out = vmi1__ThreadBPModeT__strict;
190 return vmi1__ThreadBPModeT__strict;
193 *out = vmi1__ThreadBPModeT__semiStrict;
194 return vmi1__ThreadBPModeT__semiStrict;
197 *out = vmi1__ThreadBPModeT__loose;
198 return vmi1__ThreadBPModeT__loose;
200 verror(
"unknown thread_bpmode_t %d; returning STRICT!\n",mode);
201 return vmi1__ThreadBPModeT__strict;
207 struct vmi1__TargetSpecT *spec,
229 if (spec->defaultProbeStyle)
232 *spec->defaultProbeStyle);
243 || spec->killOnCloseSignal) {
246 (spec->killOnCloseSignal) ? *spec->killOnCloseSignal : SIGKILL;
248 if (spec->debugfileRootPrefix)
250 if (spec->activeProbeThreadEntry
253 if (spec->activeProbeThreadExit
256 if (spec->activeProbeMemory
259 if (spec->activeProbeOther
265 && spec->backendSpec->__union_backendSpec \
266 == SOAP_UNION__vmi1__union_backendSpec_targetPtraceSpec)
268 (
struct vmi1__TargetPtraceSpecT *)spec->backendSpec->union_backendSpec.targetPtraceSpec,
271 #ifdef ENABLE_XENSUPPORT
274 && spec->backendSpec->__union_backendSpec \
275 == SOAP_UNION__vmi1__union_backendSpec_targetXenSpec)
276 x_TargetXenSpecT_to_t_xen_vm_spec(soap,
277 (
struct vmi1__TargetXenSpecT *)spec->backendSpec->union_backendSpec.targetXenSpec,
283 && spec->backendSpec->__union_backendSpec \
284 == SOAP_UNION__vmi1__union_backendSpec_targetGdbSpec)
286 (
struct vmi1__TargetGdbSpecT *)spec->backendSpec->union_backendSpec.targetGdbSpec,
290 spec->backendSpec = NULL;
293 spec->backendSpec = NULL;
296 verror(
"bad target-specific spec (%d)\n",type);
303 struct vmi1__TargetSpecT *
307 struct vmi1__TargetSpecT *out) {
308 struct vmi1__TargetSpecT *ospec;
331 ospec->targetId =
SOAP_CALLOC(soap,1,
sizeof(*ospec->targetId));
335 ospec->defaultProbeStyle =
336 SOAP_CALLOC(soap,1,
sizeof(*ospec->defaultProbeStyle));
337 *ospec->defaultProbeStyle =
342 ospec->logStdout =
SOAP_CALLOC(soap,1,
sizeof(*ospec->logStdout));
347 ospec->logStderr =
SOAP_CALLOC(soap,1,
sizeof(*ospec->logStderr));
352 ospec->killOnClose =
SOAP_CALLOC(soap,1,
sizeof(*ospec->killOnClose));
358 ospec->killOnCloseSignal =
359 SOAP_CALLOC(soap,1,
sizeof(*ospec->killOnCloseSignal));
364 ospec->activeProbeThreadEntry =
365 SOAP_CALLOC(soap,1,
sizeof(*ospec->activeProbeThreadEntry));
370 ospec->activeProbeThreadExit =
371 SOAP_CALLOC(soap,1,
sizeof(*ospec->activeProbeThreadExit));
376 ospec->activeProbeMemory =
377 SOAP_CALLOC(soap,1,
sizeof(*ospec->activeProbeMemory));
382 ospec->activeProbeOther =
383 SOAP_CALLOC(soap,1,
sizeof(*ospec->activeProbeOther));
390 ospec->backendSpec =
SOAP_CALLOC(soap,1,
sizeof(*ospec->backendSpec));
391 ospec->backendSpec->__union_backendSpec = \
392 SOAP_UNION__vmi1__union_backendSpec_targetPtraceSpec;
393 ospec->backendSpec->union_backendSpec.targetPtraceSpec =
\
398 #ifdef ENABLE_XENSUPPORT
400 ospec->backendSpec =
SOAP_CALLOC(soap,1,
sizeof(*ospec->backendSpec));
401 ospec->backendSpec->__union_backendSpec = \
402 SOAP_UNION__vmi1__union_backendSpec_targetXenSpec;
403 ospec->backendSpec->union_backendSpec.targetXenSpec = \
404 t_xen_vm_spec_to_x_TargetXenSpecT(soap,
410 ospec->backendSpec =
SOAP_CALLOC(soap,1,
sizeof(*ospec->backendSpec));
411 ospec->backendSpec->__union_backendSpec = \
412 SOAP_UNION__vmi1__union_backendSpec_targetGdbSpec;
413 ospec->backendSpec->union_backendSpec.targetGdbSpec =
\
419 ospec->backendSpec =
SOAP_CALLOC(soap,1,
sizeof(*ospec->backendSpec));
420 ospec->backendSpec->__union_backendSpec = \
421 SOAP_UNION__vmi1__union_backendSpec_targetOsProcessSpec;
422 ospec->backendSpec->union_backendSpec.targetOsProcessSpec = NULL;
425 ospec->backendSpec =
SOAP_CALLOC(soap,1,
sizeof(*ospec->backendSpec));
426 ospec->backendSpec->__union_backendSpec = \
427 SOAP_UNION__vmi1__union_backendSpec_targetPhpSpec;
428 ospec->backendSpec->union_backendSpec.targetPhpSpec = NULL;
434 #ifdef ENABLE_XENSUPPORT
436 x_TargetXenSpecT_to_t_xen_vm_spec(
struct soap *soap,
437 struct vmi1__TargetXenSpecT *spec,
448 ospec->
domain = strdup(spec->domain);
449 if (spec->kernelFilename)
451 if (spec->configFile)
455 if (spec->clearMemCachesEachException
458 if (spec->memcacheMmapSize && *spec->memcacheMmapSize > 0)
460 #ifdef ENABLE_XENACCESS
472 if (spec->dominfoTimeout && *spec->dominfoTimeout > 0)
478 struct vmi1__TargetXenSpecT *
479 t_xen_vm_spec_to_x_TargetXenSpecT(
struct soap *soap,
482 struct vmi1__TargetXenSpecT *out) {
483 struct vmi1__TargetXenSpecT *ospec;
497 ospec->noHVMSetContext =
498 SOAP_CALLOC(soap,1,
sizeof(*ospec->noHVMSetContext));
502 ospec->clearMemCachesEachException =
503 SOAP_CALLOC(soap,1,
sizeof(*ospec->clearMemCachesEachException));
507 ospec->memcacheMmapSize =
508 SOAP_CALLOC(soap,1,
sizeof(*ospec->memcacheMmapSize));
517 ospec->useXenAccess =
522 ospec->noClearHWDbgReg =
523 SOAP_CALLOC(soap,1,
sizeof(*ospec->noClearHWDbgReg));
527 ospec->noUseMultiplexer =
528 SOAP_CALLOC(soap,1,
sizeof(*ospec->noUseMultiplexer));
532 ospec->dominfoTimeout =
533 SOAP_CALLOC(soap,1,
sizeof(*ospec->dominfoTimeout));
543 struct vmi1__TargetGdbSpecT *spec,
553 if (spec->gdbHostname)
554 ospec->
hostname = strdup(spec->gdbHostname);
555 if (spec->gdbPort && *spec->gdbPort > 0)
556 ospec->
port = *spec->gdbPort;
557 if (spec->gdbSockfile)
558 ospec->
sockfile = strdup(spec->gdbSockfile);
563 if (spec->clearMemCachesEachException
566 if (spec->qemuQmpHostname)
568 if (spec->qemuQmpPort && *spec->qemuQmpPort > 0)
570 if (spec->qemuMemPath)
572 if (spec->mainFilename)
574 if (spec->memcacheMmapSize && *spec->memcacheMmapSize > 0)
580 struct vmi1__TargetGdbSpecT *
584 struct vmi1__TargetGdbSpecT *out) {
585 struct vmi1__TargetGdbSpecT *ospec;
594 if (spec->
port > 0) {
597 *ospec->gdbPort = spec->
port;
628 ospec->clearMemCachesEachException =
629 SOAP_CALLOC(soap,1,
sizeof(*ospec->clearMemCachesEachException));
633 ospec->memcacheMmapSize =
634 SOAP_CALLOC(soap,1,
sizeof(*ospec->memcacheMmapSize));
643 struct vmi1__TargetPtraceSpecT *spec,
657 ospec->
pid = *(spec->pid);
659 ospec->
program = strdup(spec->program);
660 if (spec->arguments && spec->arguments->__sizeargument) {
661 ospec->
argv =
calloc(spec->arguments->__sizeargument + 1,
sizeof(
char *));
662 for (i = 0; i < spec->arguments->__sizeargument; ++
i) {
663 if (spec->arguments->argument[i].__size >= 0) {
665 malloc(spec->arguments->argument[i].__size + 1);
666 memcpy(ospec->
argv[i],spec->arguments->argument[i].__ptr,
667 spec->arguments->argument[i].__size);
669 ospec->
argv[
i][spec->arguments->argument[
i].__size] =
'\0';
672 ospec->
argv[
i] = NULL;
675 if (spec->environment && spec->environment->__sizeenvvar) {
676 ospec->
envp =
calloc(spec->environment->__sizeenvvar + 1,
sizeof(
char *));
677 for (i = 0; i < spec->environment->__sizeenvvar; ++
i)
678 ospec->
envp[i] = strdup(spec->environment->envvar[i]);
679 ospec->
envp[
i] = NULL;
685 struct vmi1__TargetPtraceSpecT *
689 struct vmi1__TargetPtraceSpecT *out) {
690 struct vmi1__TargetPtraceSpecT *ospec;
700 ospec->pid =
SOAP_CALLOC(soap,1,
sizeof(*(ospec->pid)));
701 *(ospec->pid) = spec->
pid;
707 for (i = 0; spec->
argv[
i] != NULL; ++
i)
710 ospec->arguments =
SOAP_CALLOC(soap,1,
sizeof(*(ospec->arguments)));
711 ospec->arguments->__sizeargument =
len;
712 ospec->arguments->argument =
\
713 SOAP_CALLOC(soap,len,
sizeof(*(ospec->arguments->argument)));
714 for (i = 0; i <
len; ++
i) {
715 ospec->arguments->argument[
i].__size = strlen(spec->
argv[i]);
721 for (i = 0; spec->
envp[
i] != NULL; ++
i)
724 ospec->environment =
SOAP_CALLOC(soap,1,
sizeof(*(ospec->environment)));
725 ospec->environment->__sizeenvvar =
len;
726 ospec->environment->envvar =
\
727 SOAP_CALLOC(soap,len,
sizeof(*(ospec->environment->envvar)));
728 for (i = 0; i <
len; ++
i)
739 enum vmi1__ThreadStatusT status,
745 case vmi1__ThreadStatusT__unknown:
748 case vmi1__ThreadStatusT__running:
751 case vmi1__ThreadStatusT__stopped:
754 case vmi1__ThreadStatusT__sleeping:
757 case vmi1__ThreadStatusT__zombie:
760 case vmi1__ThreadStatusT__dead:
763 case vmi1__ThreadStatusT__blockedio:
766 case vmi1__ThreadStatusT__paging:
769 case vmi1__ThreadStatusT__paused:
774 verror(
"unknown ThreadStatusT %d\n",status);
785 enum vmi1__ThreadStatusT
789 enum vmi1__ThreadStatusT *out) {
790 enum vmi1__ThreadStatusT retval;
794 retval = vmi1__ThreadStatusT__unknown;
797 retval = vmi1__ThreadStatusT__running;
800 retval = vmi1__ThreadStatusT__stopped;
803 retval = vmi1__ThreadStatusT__sleeping;
806 retval = vmi1__ThreadStatusT__zombie;
809 retval = vmi1__ThreadStatusT__dead;
812 retval = vmi1__ThreadStatusT__blockedio;
815 retval = vmi1__ThreadStatusT__paging;
818 retval = vmi1__ThreadStatusT__paused;
821 verror(
"unknown thread_status_t %d\n",status);
822 retval = vmi1__ThreadStatusT__unknown;
834 enum vmi1__TargetStatusT status,
840 case vmi1__TargetStatusT__unknown:
843 case vmi1__TargetStatusT__running:
846 case vmi1__TargetStatusT__paused:
849 case vmi1__TargetStatusT__dead:
852 case vmi1__TargetStatusT__stopped:
855 case vmi1__TargetStatusT__error:
858 case vmi1__TargetStatusT__done:
862 verror(
"unknown TargetStatusT %d\n",status);
873 enum vmi1__TargetStatusT
877 enum vmi1__TargetStatusT *out) {
879 enum vmi1__TargetStatusT retval;
883 retval = vmi1__TargetStatusT__unknown;
886 retval = vmi1__TargetStatusT__running;
889 retval = vmi1__TargetStatusT__paused;
892 retval = vmi1__TargetStatusT__dead;
895 retval = vmi1__TargetStatusT__stopped;
898 retval = vmi1__TargetStatusT__error;
901 retval = vmi1__TargetStatusT__done;
904 verror(
"unknown target_status_t %d\n",status);
905 retval = vmi1__TargetStatusT__unknown;
915 struct vmi1__ThreadT *
919 struct vmi1__ThreadT *out) {
920 struct vmi1__ThreadT *othread;
927 othread->thid = thread->
tid;
929 othread->threadStatus =
\
945 struct vmi1__TargetT *
949 struct vmi1__TargetT *out) {
964 otarget->activeProbeThreadEntry =
965 SOAP_CALLOC(soap,1,
sizeof(*otarget->activeProbeThreadEntry));
970 otarget->activeProbeThreadExit =
971 SOAP_CALLOC(soap,1,
sizeof(*otarget->activeProbeThreadExit));
976 otarget->activeProbeMemory =
977 SOAP_CALLOC(soap,1,
sizeof(*otarget->activeProbeMemory));
982 otarget->activeProbeOther =
983 SOAP_CALLOC(soap,1,
sizeof(*otarget->activeProbeOther));
989 otarget->targetSpec =
\
992 otarget->targetStatus = vmi1__TargetStatusT__unknown;
994 otarget->__sizethread = 0;
995 otarget->thread = NULL;
997 otarget->__sizeaddrSpace = 0;
998 otarget->addrSpace = NULL;
1003 struct vmi1__TargetT *
1007 struct vmi1__TargetT *out) {
1008 struct vmi1__TargetT *
otarget;
1021 otarget->tid = target->
id;
1029 otarget->activeProbeThreadEntry =
1030 SOAP_CALLOC(soap,1,
sizeof(*otarget->activeProbeThreadEntry));
1035 otarget->activeProbeThreadExit =
1036 SOAP_CALLOC(soap,1,
sizeof(*otarget->activeProbeThreadExit));
1041 otarget->activeProbeMemory =
1042 SOAP_CALLOC(soap,1,
sizeof(*otarget->activeProbeMemory));
1047 otarget->activeProbeOther =
1048 SOAP_CALLOC(soap,1,
sizeof(*otarget->activeProbeOther));
1054 otarget->targetSpec =
\
1057 otarget->targetStatus =
\
1062 if (threads && array_list_len(threads)) {
1063 otarget->__sizethread = array_list_len(threads);
1064 otarget->thread =
SOAP_CALLOC(soap,array_list_len(threads),
1065 sizeof(*(otarget->thread)));
1068 &otarget->thread[i]);
1076 otarget->__sizeaddrSpace =
len;
1077 otarget->addrSpace =
SOAP_CALLOC(soap,len,
sizeof(*(otarget->addrSpace)));
1081 &otarget->addrSpace[i]);
1087 array_list_free(threads);
1092 struct vmi1__AddrSpaceT *
1096 struct vmi1__AddrSpaceT *out) {
1097 struct vmi1__AddrSpaceT *ospace;
1110 ospace->id = space->
tag;
1117 ospace->__sizememRegion =
len;
1118 ospace->memRegion =
SOAP_CALLOC(soap,len,
sizeof(*(ospace->memRegion)));
1122 &ospace->memRegion[i]);
1130 enum vmi1__MemRegionTypeT
1134 enum vmi1__MemRegionTypeT *out) {
1136 enum vmi1__MemRegionTypeT retval;
1140 retval = vmi1__MemRegionTypeT__unknown;
1143 retval = vmi1__MemRegionTypeT__heap;
1146 retval = vmi1__MemRegionTypeT__stack;
1149 retval = vmi1__MemRegionTypeT__vdso;
1152 retval = vmi1__MemRegionTypeT__vsyscall;
1155 retval = vmi1__MemRegionTypeT__anon;
1158 retval = vmi1__MemRegionTypeT__main;
1161 retval = vmi1__MemRegionTypeT__lib;
1164 verror(
"unknown region_type_t %d\n",rtype);
1165 retval = vmi1__MemRegionTypeT__unknown;
1175 struct vmi1__MemRegionT *
1179 struct vmi1__MemRegionT *out) {
1180 struct vmi1__MemRegionT *oregion;
1184 GHashTableIter iter;
1200 oregion->memRegionType =
\
1212 oregion->__sizememRange =
len;
1213 oregion->memRange =
SOAP_CALLOC(soap,len,
sizeof(*(oregion->memRange)));
1223 oregion->__sizedebugFileId =
len;
1224 oregion->debugFileId =
\
1225 SOAP_CALLOC(soap,len,
sizeof(*(oregion->debugFileId)));
1226 g_hash_table_iter_init(&iter,region->
debugfiles);
1228 while (g_hash_table_iter_next(&iter,NULL,(gpointer *)&df)) {
1229 snprintf(idbuf,12,
"i%d",df->
id);
1238 struct vmi1__MemRangeT *
1242 struct vmi1__MemRangeT *out) {
1243 struct vmi1__MemRangeT *orange;
1263 orange->start = range->
start;
1264 orange->end = range->
end;
1265 orange->offset = range->
offset;
1270 struct vmi1__ProbeT *
1274 struct vmi1__ProbeT *out) {
1275 struct vmi1__ProbeT *oprobe;
1283 oprobe->pid = probe->
id;
1303 struct vmi1__ProbeEventT *
1305 struct probe *
probe,
tid_t tid,
int type,
struct probe *trigger,
struct probe *base,
1307 struct vmi1__ProbeEventT *out) {
1308 struct vmi1__ProbeEventT *oevent;
1310 GHashTableIter iter;
1324 oevent->probeEventType = _vmi1__probeEventType__pre;
1326 oevent->probeEventType = _vmi1__probeEventType__post;
1332 oevent->registerValues =
SOAP_CALLOC(soap,1,
sizeof(*oevent->registerValues));
1336 g_hash_table_iter_init(&iter,regs);
1338 oevent->registerValues->__sizeregisterValue = g_hash_table_size(regs);
1339 oevent->registerValues->registerValue =
1341 sizeof(*oevent->registerValues->registerValue));
1343 while (g_hash_table_iter_next(&iter,
1344 (gpointer *)&rname,(gpointer *)&rvp)) {
1345 oevent->registerValues->registerValue[
i].name = rname;
1346 oevent->registerValues->registerValue[
i].value = *rvp;
1349 g_hash_table_destroy(regs);
1352 oevent->registerValues->__sizeregisterValue = 0;
1353 oevent->registerValues->registerValue = NULL;
1361 enum vmi1__ProbepointTypeT in) {
1363 case vmi1__ProbepointTypeT__break_:
1365 case vmi1__ProbepointTypeT__watch:
1368 verror(
"unknown ProbepointTypeT %d!\n",in);
1372 enum vmi1__ProbepointTypeT
1377 return vmi1__ProbepointTypeT__break_;
1379 return vmi1__ProbepointTypeT__watch;
1381 verror(
"unknown probepoint_type_t %d!\n",in);
1388 enum vmi1__ProbepointStyleT in) {
1390 case vmi1__ProbepointStyleT__hw:
1392 case vmi1__ProbepointStyleT__sw:
1394 case vmi1__ProbepointStyleT__fastest:
1397 verror(
"unknown ProbepointStyleT %d!\n",in);
1401 enum vmi1__ProbepointStyleT
1406 return vmi1__ProbepointStyleT__hw;
1408 return vmi1__ProbepointStyleT__sw;
1410 return vmi1__ProbepointStyleT__fastest;
1412 verror(
"unknown probepoint_style_t %d!\n",in);
1419 enum vmi1__ProbepointWhenceT in) {
1421 case vmi1__ProbepointWhenceT__auto_:
1423 case vmi1__ProbepointWhenceT__exec:
1425 case vmi1__ProbepointWhenceT__write:
1427 case vmi1__ProbepointWhenceT__readwrite:
1430 verror(
"unknown ProbepointWhenceT %d!\n",in);
1434 enum vmi1__ProbepointWhenceT
1439 return vmi1__ProbepointWhenceT__auto_;
1441 return vmi1__ProbepointWhenceT__exec;
1443 return vmi1__ProbepointWhenceT__write;
1445 return vmi1__ProbepointWhenceT__readwrite;
1447 verror(
"unknown probepoint_whence_t %d!\n",in);
1454 enum vmi1__ProbepointSizeT in) {
1456 case vmi1__ProbepointSizeT__auto_:
1458 case vmi1__ProbepointSizeT__0:
1460 case vmi1__ProbepointSizeT__2:
1462 case vmi1__ProbepointSizeT__4:
1464 case vmi1__ProbepointSizeT__8:
1467 verror(
"unknown ProbepointSizeT %d!\n",in);
1471 enum vmi1__ProbepointSizeT
1476 return vmi1__ProbepointSizeT__auto_;
1478 return vmi1__ProbepointSizeT__0;
1480 return vmi1__ProbepointSizeT__2;
1482 return vmi1__ProbepointSizeT__4;
1484 return vmi1__ProbepointSizeT__8;
1486 verror(
"unknown probepoint_watchsize_t %d!\n",in);
1493 enum vmi1__ActionTypeT in) {
1495 case vmi1__ActionTypeT__return_:
1497 case vmi1__ActionTypeT__regmod:
1499 case vmi1__ActionTypeT__memmod:
1501 case vmi1__ActionTypeT__singlestep:
1504 verror(
"unknown ActionTypeT %d!\n",in);
1508 enum vmi1__ActionTypeT
1513 return vmi1__ActionTypeT__return_;
1515 return vmi1__ActionTypeT__regmod;
1517 return vmi1__ActionTypeT__memmod;
1519 return vmi1__ActionTypeT__singlestep;
1521 verror(
"unknown action_type_t %d!\n",in);
1528 enum vmi1__ActionWhenceT in) {
1530 case vmi1__ActionWhenceT__oneshot:
1532 case vmi1__ActionWhenceT__repeatpre:
1534 case vmi1__ActionWhenceT__repeatpost:
1537 verror(
"unknown ActionWhenceT %d!\n",in);
1541 enum vmi1__ActionWhenceT
1546 return vmi1__ActionWhenceT__oneshot;
1548 return vmi1__ActionWhenceT__repeatpre;
1550 return vmi1__ActionWhenceT__repeatpost;
1552 verror(
"unknown action_whence_t %d!\n",in);
1559 enum vmi1__HandlerMsgT in) {
1561 case vmi1__HandlerMsgT__success:
1563 case vmi1__HandlerMsgT__failure:
1565 case vmi1__HandlerMsgT__stepping:
1567 case vmi1__HandlerMsgT__stepping_USCOREat_USCOREbp:
1570 verror(
"unknown HandlerMsgT %d!\n",in);
1574 enum vmi1__HandlerMsgT
1579 return vmi1__HandlerMsgT__success;
1581 return vmi1__HandlerMsgT__failure;
1583 return vmi1__HandlerMsgT__stepping;
1585 return vmi1__HandlerMsgT__stepping_USCOREat_USCOREbp;
1587 verror(
"unknown handler_msg_t %d!\n",in);
1592 struct vmi1__ActionT *
1596 struct vmi1__ActionT *out) {
1597 struct vmi1__ActionT *oaction;
1604 oaction->actionId = action->
id;
1605 oaction->actionSpec =
SOAP_CALLOC(soap,1,
sizeof(*oaction->actionSpec));
1606 oaction->actionSpec->tid = action->
target->
id;
1607 oaction->actionSpec->pid = action->
probe->
id;
1608 oaction->actionSpec->type =
\
1610 oaction->actionSpec->whence =
\
1612 switch (action->
type) {
1614 oaction->actionSpec->__union_ActionSpecT = \
1615 SOAP_UNION__vmi1__union_ActionSpecT_return_;
1616 oaction->actionSpec->union_ActionSpecT.return_ =
\
1617 SOAP_CALLOC(soap,1,
sizeof(*oaction->actionSpec->union_ActionSpecT.return_));
1618 oaction->actionSpec->union_ActionSpecT.return_->code = \
1619 action->detail.ret.retval;
1622 oaction->actionSpec->__union_ActionSpecT = \
1623 SOAP_UNION__vmi1__union_ActionSpecT_regmod;
1624 oaction->actionSpec->union_ActionSpecT.regmod =
\
1625 SOAP_CALLOC(soap,1,
sizeof(*oaction->actionSpec->union_ActionSpecT.regmod));
1626 oaction->actionSpec->union_ActionSpecT.regmod->registerValue =
\
1627 SOAP_CALLOC(soap,1,
sizeof(*oaction->actionSpec->union_ActionSpecT.regmod->registerValue));
1629 oaction->actionSpec->union_ActionSpecT.regmod->registerValue->name,
1631 oaction->actionSpec->union_ActionSpecT.regmod->registerValue->value = \
1632 action->detail.regmod.regval;
1635 oaction->actionSpec->__union_ActionSpecT = \
1636 SOAP_UNION__vmi1__union_ActionSpecT_memmod;
1637 oaction->actionSpec->union_ActionSpecT.memmod =
\
1638 SOAP_CALLOC(soap,1,
sizeof(*oaction->actionSpec->union_ActionSpecT.memmod));
1639 oaction->actionSpec->union_ActionSpecT.memmod->addr = \
1640 action->detail.memmod.destaddr;
1642 oaction->actionSpec->union_ActionSpecT.memmod->data.__ptr = \
1644 oaction->actionSpec->union_ActionSpecT.memmod->data.__size = \
1659 verror(
"unknown action type %d!\n",action->
type);
1666 struct vmi1__ActionEventT *
1671 struct vmi1__ActionEventT *out) {
1672 struct vmi1__ActionEventT *oevent;
1674 GHashTableIter iter;
1687 oevent->actionDetail =
SOAP_CALLOC(soap,1,
sizeof(*oevent->actionDetail));
1688 oevent->actionDetail->stepCount =
\
1689 SOAP_CALLOC(soap,1,
sizeof(*oevent->actionDetail->stepCount));
1690 *oevent->actionDetail->stepCount = msg_detail;
1696 oevent->registerValues =
SOAP_CALLOC(soap,1,
sizeof(*oevent->registerValues));
1700 g_hash_table_iter_init(&iter,regs);
1702 oevent->registerValues->__sizeregisterValue = g_hash_table_size(regs);
1703 oevent->registerValues->registerValue =
1705 sizeof(*oevent->registerValues->registerValue));
1707 while (g_hash_table_iter_next(&iter,
1708 (gpointer *)&rname,(gpointer *)&rvp)) {
1709 oevent->registerValues->registerValue[
i].name = rname;
1710 oevent->registerValues->registerValue[
i].value = *rvp;
1713 g_hash_table_destroy(regs);
1716 oevent->registerValues->__sizeregisterValue = 0;
1717 oevent->registerValues->registerValue = NULL;
struct vmi1__TargetSpecT * t_target_spec_to_x_TargetSpecT(struct soap *soap, struct target_spec *spec, GHashTable *reftab, struct vmi1__TargetSpecT *out)
target_mode_t target_mode
enum vmi1__ThreadBPModeT t_thread_bpmode_t_to_x_ThreadBPModeT(struct soap *soap, thread_bpmode_t mode, GHashTable *reftab, enum vmi1__ThreadBPModeT *out)
unsigned int use_xenaccess
struct vmi1__TargetT * t_target_to_x_TargetT(struct soap *soap, struct target *target, GHashTable *reftab, struct vmi1__TargetT *out)
struct vmi1__TargetPtraceSpecT * t_linux_userproc_spec_to_x_TargetPtraceSpecT(struct soap *soap, struct linux_userproc_spec *spec, GHashTable *reftab, struct vmi1__TargetPtraceSpecT *out)
#define SOAP_CALLOC(soap, nmemb, size)
struct linux_userproc_spec * linux_userproc_build_spec(void)
static uint64_t unsigned int i
struct vmi1__MemRangeT * t_memrange_to_x_MemRangeT(struct soap *soap, struct memrange *range, GHashTable *reftab, struct vmi1__MemRangeT *out)
GHashTable * target_copy_registers(struct target *target, tid_t tid)
unsigned long int memcache_mmap_size
#define v_g_list_foreach(glhead, glcur, elm)
enum vmi1__HandlerMsgT t_handler_msg_t_to_x_HandlerMsgT(struct soap *soap, handler_msg_t in)
active_probe_flags_t ap_flags
#define verror(format,...)
struct vmi1__AddrSpaceT * t_addrspace_to_x_AddrSpaceT(struct soap *soap, struct addrspace *space, GHashTable *reftab, struct vmi1__AddrSpaceT *out)
thread_status_t x_ThreadStatusT_to_t_thread_status_t(struct soap *soap, enum vmi1__ThreadStatusT status, GHashTable *reftab, thread_status_t *out)
unsigned int clear_mem_caches_each_exception
struct gdb_spec * x_TargetGdbSpecT_to_t_gdb_spec(struct soap *soap, struct vmi1__TargetGdbSpecT *spec, GHashTable *reftab, struct gdb_spec *out)
action_whence_t x_ActionWhenceT_to_t_action_whence_t(struct soap *soap, enum vmi1__ActionWhenceT in)
unsigned int no_hvm_setcontext
ADDR probe_addr(struct probe *probe)
struct target_spec * x_TargetSpecT_to_t_target_spec(struct soap *soap, struct vmi1__TargetSpecT *spec, GHashTable *reftab, struct target_spec *out)
struct vmi1__ThreadT * t_target_thread_to_x_ThreadT(struct soap *soap, struct target_thread *thread, GHashTable *reftab, struct vmi1__ThreadT *out)
enum vmi1__ActionWhenceT t_action_whence_t_to_x_ActionWhenceT(struct soap *soap, action_whence_t in)
#define array_list_foreach(alist, lpc, placeholder)
struct xen_vm_spec * xen_vm_build_spec(void)
enum vmi1__ThreadStatusT t_thread_status_t_to_x_ThreadStatusT(struct soap *soap, thread_status_t status, GHashTable *reftab, enum vmi1__ThreadStatusT *out)
unsigned int no_hw_debug_reg_clear
struct action::@17::@21 memmod
struct vmi1__ProbeEventT * t_probe_to_x_ProbeEventT(struct soap *soap, struct probe *probe, tid_t tid, int type, struct probe *trigger, struct probe *base, GHashTable *reftab, struct vmi1__ProbeEventT *out)
struct vmi1__MemRegionT * t_memregion_to_x_MemRegionT(struct soap *soap, struct memregion *region, GHashTable *reftab, struct vmi1__MemRegionT *out)
unsigned int clear_mem_caches_each_exception
handler_msg_t x_HandlerMsgT_to_t_handler_msg_t(struct soap *soap, enum vmi1__HandlerMsgT in)
unsigned int no_use_multiplexer
struct vmi1__ActionT * t_action_to_x_ActionT(struct soap *soap, struct action *action, GHashTable *reftab, struct vmi1__ActionT *out)
const char * target_regname(struct target *target, REG reg)
target_mode_t x_TargetModeT_to_t_target_mode_t(struct soap *soap, enum vmi1__TargetModeT mode, GHashTable *reftab, target_mode_t *out)
enum vmi1__MemRegionTypeT t_region_type_t_to_x_MemRegionTypeT(struct soap *soap, region_type_t rtype, GHashTable *reftab, enum vmi1__MemRegionTypeT *out)
enum vmi1__TargetStatusT t_target_status_t_to_x_TargetStatusT(struct soap *soap, target_status_t status, GHashTable *reftab, enum vmi1__TargetStatusT *out)
struct action::@17::@20 regmod
probepoint_whence_t x_ProbepointWhenceT_to_t_probepoint_whence_t(struct soap *soap, enum vmi1__ProbepointWhenceT in)
probepoint_watchsize_t x_ProbepointSizeT_to_t_probepoint_watchsize_t(struct soap *soap, enum vmi1__ProbepointSizeT in)
probepoint_style_t x_ProbepointStyleT_to_t_probepoint_style_t(struct soap *soap, enum vmi1__ProbepointStyleT in)
struct vmi1__ActionEventT * t_action_to_x_ActionEventT(struct soap *soap, struct action *action, struct target_thread *tthread, handler_msg_t msg, int msg_detail, GHashTable *reftab, struct vmi1__ActionEventT *out)
target_type_t target_type
struct target_thread * thread
probepoint_type_t x_ProbepointTypeT_to_t_probepoint_type_t(struct soap *soap, enum vmi1__ProbepointTypeT in)
enum vmi1__TargetTypeT t_target_type_t_to_x_TargetTypeT(struct soap *soap, target_type_t type, GHashTable *reftab, enum vmi1__TargetTypeT *out)
struct vmi1__TargetT * t_target_id_to_x_TargetT(struct soap *soap, int target_id, struct target_spec *spec, GHashTable *reftab, struct vmi1__TargetT *out)
void * calloc(size_t nmemb, size_t size)
enum vmi1__ProbepointSizeT t_probepoint_watchsize_t_to_x_ProbepointSizeT(struct soap *soap, probepoint_watchsize_t in)
enum vmi1__ProbepointWhenceT t_probepoint_whence_t_to_x_ProbepointWhenceT(struct soap *soap, probepoint_whence_t in)
target_status_t target_status(struct target *target)
struct target_spec * target_build_spec(target_type_t type, target_mode_t mode)
unsigned long int memcache_mmap_size
struct linux_userproc_spec * x_TargetPtraceSpecT_to_t_linux_userproc_spec(struct soap *soap, struct vmi1__TargetPtraceSpecT *spec, GHashTable *reftab, struct linux_userproc_spec *out)
probepoint_watchsize_t watchsize
int target_id(struct target *target)
struct target_spec * spec
action_type_t x_ActionTypeT_to_t_action_type_t(struct soap *soap, enum vmi1__ActionTypeT in)
void * malloc(size_t size)
char * debugfile_root_prefix
struct target_thread * target_lookup_thread(struct target *target, tid_t tid)
enum vmi1__ProbepointStyleT t_probepoint_style_t_to_x_ProbepointStyleT(struct soap *soap, probepoint_style_t in)
struct gdb_spec * gdb_build_spec(void)
struct vmi1__TargetGdbSpecT * t_gdb_spec_to_x_TargetGdbSpecT(struct soap *soap, struct gdb_spec *spec, GHashTable *reftab, struct vmi1__TargetGdbSpecT *out)
#define SOAP_STRCPY(soap, d, s)
enum vmi1__ActionTypeT t_action_type_t_to_x_ActionTypeT(struct soap *soap, action_type_t in)
char * probe_name(struct probe *probe)
target_type_t x_TargetTypeT_to_t_target_type_t(struct soap *soap, enum vmi1__TargetTypeT type, GHashTable *reftab, target_type_t *out)
target_status_t x_TargetStatusT_to_t_target_status_t(struct soap *soap, enum vmi1__TargetStatusT status, GHashTable *reftab, target_status_t *out)
struct array_list * target_list_threads(struct target *target)
struct vmi1__ProbeT * t_probe_to_x_ProbeT(struct soap *soap, struct probe *probe, GHashTable *reftab, struct vmi1__ProbeT *out)
enum vmi1__ProbepointTypeT t_probepoint_type_t_to_x_ProbepointTypeT(struct soap *soap, probepoint_type_t in)
struct probepoint * probepoint
active_probe_flags_t ap_flags
thread_bpmode_t x_ThreadBPModeT_to_t_thread_bpmode_t(struct soap *soap, enum vmi1__ThreadBPModeT mode, GHashTable *reftab, thread_bpmode_t *out)
enum vmi1__TargetModeT t_target_mode_t_to_x_TargetModeT(struct soap *soap, target_mode_t mode, GHashTable *reftab, enum vmi1__TargetModeT *out)
probepoint_whence_t whence
target_type_t supported_overlay_types