diff options
Diffstat (limited to 'miasm2/jitter')
| -rw-r--r-- | miasm2/jitter/Jittcc.c | 20 | ||||
| -rw-r--r-- | miasm2/jitter/arch/JitCore_arm.c | 1 | ||||
| -rw-r--r-- | miasm2/jitter/arch/JitCore_mips32.c | 1 | ||||
| -rw-r--r-- | miasm2/jitter/arch/JitCore_msp430.c | 1 | ||||
| -rw-r--r-- | miasm2/jitter/jitcore_tcc.py | 3 | ||||
| -rw-r--r-- | miasm2/jitter/vm_mngr.h | 1 | ||||
| -rw-r--r-- | miasm2/jitter/vm_mngr_py.c | 83 |
7 files changed, 23 insertions, 87 deletions
diff --git a/miasm2/jitter/Jittcc.c b/miasm2/jitter/Jittcc.c index 2d309376..fb8b3e27 100644 --- a/miasm2/jitter/Jittcc.c +++ b/miasm2/jitter/Jittcc.c @@ -38,7 +38,7 @@ char **lib_array = NULL; //char *libcodenat_path = NULL; -void tcc_init_state(void) +TCCState * tcc_init_state(void) { int i; @@ -57,10 +57,20 @@ void tcc_init_state(void) for (i=0;i<include_array_count; i++){ tcc_add_include_path(tcc_state, include_array[i]); } -} + return tcc_state; +} +PyObject* tcc_end(PyObject* self, PyObject* args) +{ + if (tcc_state) { + tcc_delete(tcc_state); + tcc_state = NULL; + } + Py_INCREF(Py_None); + return Py_None; +} PyObject* tcc_set_emul_lib_path(PyObject* self, PyObject* args) { @@ -109,6 +119,7 @@ PyObject* tcc_set_emul_lib_path(PyObject* self, PyObject* args) */ Py_INCREF(Py_None); + tcc_state = tcc_init_state(); return Py_None; } @@ -133,8 +144,6 @@ PyObject* tcc_compil(PyObject* self, PyObject* args) char* func_code; int (*entry)(void); - tcc_init_state(); - if (!PyArg_ParseTuple(args, "ss", &func_name, &func_code)) return NULL; @@ -154,6 +163,7 @@ PyObject* tcc_compil(PyObject* self, PyObject* args) fprintf(stderr, "%s\n", func_name); exit(0); } + return PyLong_FromUnsignedLongLong((uint64_t)entry); } @@ -207,6 +217,8 @@ static PyMethodDef TccMethods[] = { "tcc exec bloc"}, {"tcc_compil", tcc_compil, METH_VARARGS, "tcc compil"}, + {"tcc_end", tcc_end, METH_VARARGS, + "tcc end"}, {NULL, NULL, 0, NULL} /* Sentinel */ }; diff --git a/miasm2/jitter/arch/JitCore_arm.c b/miasm2/jitter/arch/JitCore_arm.c index 2b3bc6e0..de234564 100644 --- a/miasm2/jitter/arch/JitCore_arm.c +++ b/miasm2/jitter/arch/JitCore_arm.c @@ -515,6 +515,7 @@ static PyMethodDef JitCore_arm_Methods[] = { static PyObject *JitCore_arm_Error; +extern int init_vm_mngr(PyObject* m); PyMODINIT_FUNC initJitCore_arm(void) { diff --git a/miasm2/jitter/arch/JitCore_mips32.c b/miasm2/jitter/arch/JitCore_mips32.c index 7a62a5fc..c340d494 100644 --- a/miasm2/jitter/arch/JitCore_mips32.c +++ b/miasm2/jitter/arch/JitCore_mips32.c @@ -598,6 +598,7 @@ static PyMethodDef JitCore_mips32_Methods[] = { static PyObject *JitCore_mips32_Error; +extern int init_vm_mngr(PyObject* m); PyMODINIT_FUNC initJitCore_mips32(void) { diff --git a/miasm2/jitter/arch/JitCore_msp430.c b/miasm2/jitter/arch/JitCore_msp430.c index 7dc2c935..20f15905 100644 --- a/miasm2/jitter/arch/JitCore_msp430.c +++ b/miasm2/jitter/arch/JitCore_msp430.c @@ -667,6 +667,7 @@ static PyMethodDef JitCore_msp430_Methods[] = { static PyObject *JitCore_msp430_Error; +extern int init_vm_mngr(PyObject* m); PyMODINIT_FUNC initJitCore_msp430(void) { diff --git a/miasm2/jitter/jitcore_tcc.py b/miasm2/jitter/jitcore_tcc.py index 856bffc0..36f65f07 100644 --- a/miasm2/jitter/jitcore_tcc.py +++ b/miasm2/jitter/jitcore_tcc.py @@ -121,6 +121,9 @@ class JitCore_Tcc(jitcore.JitCore): include_files = ";".join(include_files) Jittcc.tcc_set_emul_lib_path(include_files, libs) + def __del__(self): + Jittcc.tcc_end() + def jitirblocs(self, label, irblocs): # irbloc = self.lbl2irbloc[lbl] f_name = "bloc_%s" % label.name diff --git a/miasm2/jitter/vm_mngr.h b/miasm2/jitter/vm_mngr.h index d092ad5d..0cacb708 100644 --- a/miasm2/jitter/vm_mngr.h +++ b/miasm2/jitter/vm_mngr.h @@ -343,7 +343,6 @@ unsigned int load_segment_limit(unsigned int d); unsigned int load_segment_limit_ok(unsigned int d); unsigned int load_tr_segment_selector(unsigned int d); - #define shift_right_arith_08(a, b)\ ((((char)(a)) >> ((int)(b)&0x1f))&0xff) #define shift_right_arith_16(a, b)\ diff --git a/miasm2/jitter/vm_mngr_py.c b/miasm2/jitter/vm_mngr_py.c index 18f2fd51..881d0c42 100644 --- a/miasm2/jitter/vm_mngr_py.c +++ b/miasm2/jitter/vm_mngr_py.c @@ -873,90 +873,8 @@ static PyTypeObject VmMngrType = { VmMngr_new, /* tp_new */ }; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - static PyObject *Vm_Mngr_Error; - -static PyMethodDef Vm_Mngr_Methods[] = { - - {NULL, NULL, 0, NULL} /* Sentinel */ - -}; - -/* -PyMODINIT_FUNC -initvm_mngr(void) -{ - PyObject *m; - - if (PyType_Ready(&VmMngrType) < 0) - return; - - m = Py_InitModule("vm_mngr", Vm_Mngr_Methods); - if (m == NULL) - return; - - Vm_Mngr_Error = PyErr_NewException("vm_mngr_.error", NULL, NULL); - Py_INCREF(Vm_Mngr_Error); - PyModule_AddObject(m, "error", Vm_Mngr_Error); - - Py_INCREF(&VmMngrType); - PyModule_AddObject(m, "VmMngr", (PyObject *)&VmMngrType); - -} -*/ - /* return 0 on success @@ -974,4 +892,5 @@ int init_vm_mngr(PyObject* m) Py_INCREF(&VmMngrType); PyModule_AddObject(m, "VmMngr", (PyObject *)&VmMngrType); + return 0; } |