about summary refs log tree commit diff stats
path: root/miasm2/jitter/vm_mngr_py.c
diff options
context:
space:
mode:
authorFabrice Desclaux <fabrice.desclaux@cea.fr>2016-08-09 13:34:57 +0200
committerFabrice Desclaux <fabrice.desclaux@cea.fr>2016-08-31 09:30:46 +0200
commit5e84000ab502c6c84bf5fe4809de9d971c9d4474 (patch)
tree664d1ab1305f7df4d23ddfd743784354283e1726 /miasm2/jitter/vm_mngr_py.c
parent5efa1aeefa92c6f5b4959f7a57e5d382c09eeae5 (diff)
downloadmiasm-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.c58
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 */
 };