diff options
| author | Fabrice Desclaux <fabrice.desclaux@cea.fr> | 2016-08-09 13:34:57 +0200 |
|---|---|---|
| committer | Fabrice Desclaux <fabrice.desclaux@cea.fr> | 2016-08-31 09:30:46 +0200 |
| commit | 5e84000ab502c6c84bf5fe4809de9d971c9d4474 (patch) | |
| tree | 664d1ab1305f7df4d23ddfd743784354283e1726 /miasm2/jitter/vm_mngr_py.c | |
| parent | 5efa1aeefa92c6f5b4959f7a57e5d382c09eeae5 (diff) | |
| download | miasm-5e84000ab502c6c84bf5fe4809de9d971c9d4474.tar.gz miasm-5e84000ab502c6c84bf5fe4809de9d971c9d4474.zip | |
Jitter: fix python jit
Diffstat (limited to 'miasm2/jitter/vm_mngr_py.c')
| -rw-r--r-- | miasm2/jitter/vm_mngr_py.c | 58 |
1 files changed, 57 insertions, 1 deletions
diff --git a/miasm2/jitter/vm_mngr_py.c b/miasm2/jitter/vm_mngr_py.c index 1e751ba4..5aece270 100644 --- a/miasm2/jitter/vm_mngr_py.c +++ b/miasm2/jitter/vm_mngr_py.c @@ -186,7 +186,7 @@ PyObject* vm_set_mem(VmMngr* self, PyObject* args) if (ret < 0) RAISE(PyExc_TypeError, "Error in set_mem"); - vm_mngr_add_mem_write(&self->vm_mngr, addr, size); + add_mem_write(&self->vm_mngr, addr, size); check_invalid_code_blocs(&self->vm_mngr); Py_INCREF(Py_None); @@ -326,9 +326,57 @@ PyObject* vm_reset_memory_access(VmMngr* self, PyObject* args) reset_memory_access(&self->vm_mngr); Py_INCREF(Py_None); return Py_None; +} + +PyObject* py_add_mem_read(VmMngr* self, PyObject* args) +{ + PyObject *py_addr; + PyObject *py_size; + uint64_t addr; + uint64_t size; + + if (!PyArg_ParseTuple(args, "OO", &py_addr, &py_size)) + return NULL; + + PyGetInt(py_addr, addr); + PyGetInt(py_size, size); + add_mem_read(&self->vm_mngr, addr, size); + Py_INCREF(Py_None); + return Py_None; + +} + +PyObject* py_add_mem_write(VmMngr* self, PyObject* args) +{ + PyObject *py_addr; + PyObject *py_size; + uint64_t addr; + uint64_t size; + + if (!PyArg_ParseTuple(args, "OO", &py_addr, &py_size)) + return NULL; + + PyGetInt(py_addr, addr); + PyGetInt(py_size, size); + add_mem_write(&self->vm_mngr, addr, size); + Py_INCREF(Py_None); + return Py_None; } +PyObject* vm_check_invalid_code_blocs(VmMngr* self, PyObject* args) +{ + check_invalid_code_blocs(&self->vm_mngr); + Py_INCREF(Py_None); + return Py_None; +} + +PyObject* vm_check_memory_breakpoint(VmMngr* self, PyObject* args) +{ + check_memory_breakpoint(&self->vm_mngr); + Py_INCREF(Py_None); + return Py_None; +} PyObject *vm_dump(PyObject* self) { @@ -594,6 +642,14 @@ static PyMethodDef VmMngr_methods[] = { "X"}, {"reset_memory_access",(PyCFunction)vm_reset_memory_access, METH_VARARGS, "X"}, + {"add_mem_read",(PyCFunction)py_add_mem_read, METH_VARARGS, + "X"}, + {"add_mem_write",(PyCFunction)py_add_mem_write, METH_VARARGS, + "X"}, + {"check_invalid_code_blocs",(PyCFunction)vm_check_invalid_code_blocs, METH_VARARGS, + "X"}, + {"check_memory_breakpoint",(PyCFunction)vm_check_memory_breakpoint, METH_VARARGS, + "X"}, {NULL} /* Sentinel */ }; |