mirror of
https://github.com/cea-sec/miasm
synced 2026-06-21 13:48:18 +00:00
Jitter: split VmMngr from JitCpu
This commit is contained in:
@@ -515,7 +515,6 @@ static PyMethodDef JitCore_arm_Methods[] = {
|
||||
|
||||
static PyObject *JitCore_arm_Error;
|
||||
|
||||
extern int init_vm_mngr(PyObject* m);
|
||||
PyMODINIT_FUNC
|
||||
initJitCore_arm(void)
|
||||
{
|
||||
@@ -535,8 +534,5 @@ initJitCore_arm(void)
|
||||
Py_INCREF(&JitCpuType);
|
||||
PyModule_AddObject(m, "JitCpu", (PyObject *)&JitCpuType);
|
||||
|
||||
/* init vm */
|
||||
init_vm_mngr(m);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -616,7 +616,6 @@ static PyMethodDef JitCore_mips32_Methods[] = {
|
||||
|
||||
static PyObject *JitCore_mips32_Error;
|
||||
|
||||
extern int init_vm_mngr(PyObject* m);
|
||||
PyMODINIT_FUNC
|
||||
initJitCore_mips32(void)
|
||||
{
|
||||
@@ -636,8 +635,5 @@ initJitCore_mips32(void)
|
||||
Py_INCREF(&JitCpuType);
|
||||
PyModule_AddObject(m, "JitCpu", (PyObject *)&JitCpuType);
|
||||
|
||||
/* init vm */
|
||||
init_vm_mngr(m);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -667,7 +667,6 @@ static PyMethodDef JitCore_msp430_Methods[] = {
|
||||
|
||||
static PyObject *JitCore_msp430_Error;
|
||||
|
||||
extern int init_vm_mngr(PyObject* m);
|
||||
PyMODINIT_FUNC
|
||||
initJitCore_msp430(void)
|
||||
{
|
||||
@@ -687,8 +686,5 @@ initJitCore_msp430(void)
|
||||
Py_INCREF(&JitCpuType);
|
||||
PyModule_AddObject(m, "JitCpu", (PyObject *)&JitCpuType);
|
||||
|
||||
/* init vm */
|
||||
init_vm_mngr(m);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -815,7 +815,6 @@ static PyMethodDef JitCore_x86_Methods[] = {
|
||||
|
||||
static PyObject *JitCore_x86_Error;
|
||||
|
||||
extern int init_vm_mngr(PyObject* m);
|
||||
PyMODINIT_FUNC
|
||||
initJitCore_x86(void)
|
||||
{
|
||||
@@ -835,9 +834,6 @@ initJitCore_x86(void)
|
||||
Py_INCREF(&JitCpuType);
|
||||
PyModule_AddObject(m, "JitCpu", (PyObject *)&JitCpuType);
|
||||
|
||||
/* init vm */
|
||||
init_vm_mngr(m);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -109,6 +109,7 @@ class JitCore_Tcc(jitcore.JitCore):
|
||||
# os.path.join(os.path.dirname(os.path.realpath(__file__)), "jitter")
|
||||
lib_dir = os.path.dirname(os.path.realpath(__file__))
|
||||
libs = []
|
||||
libs.append(os.path.join(lib_dir, 'VmMngr.so'))
|
||||
libs.append(os.path.join(lib_dir, 'arch/JitCore_%s.so' % (self.ir_arch.arch.name)))
|
||||
libs = ';'.join(libs)
|
||||
jittcc_path = Jittcc.__file__
|
||||
|
||||
@@ -8,6 +8,7 @@ from miasm2.jitter.csts import *
|
||||
from miasm2.core.utils import *
|
||||
from miasm2.core.bin_stream import bin_stream_vm
|
||||
from miasm2.ir.ir2C import init_arch_C
|
||||
from miasm2.jitter import VmMngr
|
||||
|
||||
hnd = logging.StreamHandler()
|
||||
hnd.setFormatter(logging.Formatter("[%(levelname)s]: %(message)s"))
|
||||
@@ -187,8 +188,9 @@ class jitter:
|
||||
else:
|
||||
raise ValueError("unsupported jit arch!")
|
||||
|
||||
self.vm = VmMngr.Vm()
|
||||
self.cpu = jcore.JitCpu()
|
||||
self.vm = jcore.VmMngr()
|
||||
|
||||
self.bs = bin_stream_vm(self.vm)
|
||||
self.ir_arch = ir_arch
|
||||
init_arch_C(self.arch)
|
||||
|
||||
+19
-13
@@ -868,7 +868,7 @@ static PyGetSetDef VmMngr_getseters[] = {
|
||||
static PyTypeObject VmMngrType = {
|
||||
PyObject_HEAD_INIT(NULL)
|
||||
0, /*ob_size*/
|
||||
"JitCore_x86_32.VmMngr", /*tp_name*/
|
||||
"VmMngr", /*tp_name*/
|
||||
sizeof(VmMngr), /*tp_basicsize*/
|
||||
0, /*tp_itemsize*/
|
||||
(destructor)VmMngr_dealloc,/*tp_dealloc*/
|
||||
@@ -907,24 +907,30 @@ static PyTypeObject VmMngrType = {
|
||||
VmMngr_new, /* tp_new */
|
||||
};
|
||||
|
||||
|
||||
static PyMethodDef VmMngr_Methods[] = {
|
||||
{NULL, NULL, 0, NULL} /* Sentinel */
|
||||
|
||||
};
|
||||
|
||||
static PyObject *Vm_Mngr_Error;
|
||||
|
||||
/*
|
||||
return
|
||||
0 on success
|
||||
-1 on error
|
||||
*/
|
||||
int init_vm_mngr(PyObject* m)
|
||||
PyMODINIT_FUNC
|
||||
initVmMngr(void)
|
||||
{
|
||||
if (PyType_Ready(&VmMngrType) < 0)
|
||||
return -1;
|
||||
PyObject *m;
|
||||
|
||||
Vm_Mngr_Error = PyErr_NewException("vm_mngr_.error", NULL, NULL);
|
||||
if (PyType_Ready(&VmMngrType) < 0)
|
||||
return;
|
||||
|
||||
m = Py_InitModule("VmMngr", VmMngr_Methods);
|
||||
if (m == NULL)
|
||||
return;
|
||||
|
||||
Vm_Mngr_Error = PyErr_NewException("VmMngr.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;
|
||||
PyModule_AddObject(m, "Vm", (PyObject *)&VmMngrType);
|
||||
}
|
||||
|
||||
@@ -24,50 +24,40 @@ def buil_all():
|
||||
'miasm2/jitter/loader',
|
||||
]
|
||||
ext_modules_no_tcc = [
|
||||
Extension("miasm2.jitter.arch.JitCore_x86",
|
||||
Extension("miasm2.jitter.VmMngr",
|
||||
["miasm2/jitter/vm_mngr.c",
|
||||
"miasm2/jitter/vm_mngr_py.c",
|
||||
"miasm2/jitter/arch/JitCore.c",
|
||||
"miasm2/jitter/vm_mngr_py.c"]),
|
||||
Extension("miasm2.jitter.arch.JitCore_x86",
|
||||
["miasm2/jitter/arch/JitCore.c",
|
||||
"miasm2/jitter/arch/JitCore_x86.c"]),
|
||||
Extension("miasm2.jitter.arch.JitCore_arm",
|
||||
["miasm2/jitter/vm_mngr.c",
|
||||
"miasm2/jitter/vm_mngr_py.c",
|
||||
"miasm2/jitter/arch/JitCore.c",
|
||||
["miasm2/jitter/arch/JitCore.c",
|
||||
"miasm2/jitter/arch/JitCore_arm.c"]),
|
||||
Extension("miasm2.jitter.arch.JitCore_msp430",
|
||||
["miasm2/jitter/vm_mngr.c",
|
||||
"miasm2/jitter/vm_mngr_py.c",
|
||||
"miasm2/jitter/arch/JitCore.c",
|
||||
["miasm2/jitter/arch/JitCore.c",
|
||||
"miasm2/jitter/arch/JitCore_msp430.c"]),
|
||||
Extension("miasm2.jitter.arch.JitCore_mips32",
|
||||
["miasm2/jitter/vm_mngr.c",
|
||||
"miasm2/jitter/vm_mngr_py.c",
|
||||
"miasm2/jitter/arch/JitCore.c",
|
||||
["miasm2/jitter/arch/JitCore.c",
|
||||
"miasm2/jitter/arch/JitCore_mips32.c"]),
|
||||
Extension("miasm2.jitter.Jitllvm",
|
||||
["miasm2/jitter/Jitllvm.c"]),
|
||||
]
|
||||
|
||||
ext_modules_all = [
|
||||
Extension("miasm2.jitter.arch.JitCore_x86",
|
||||
Extension("miasm2.jitter.VmMngr",
|
||||
["miasm2/jitter/vm_mngr.c",
|
||||
"miasm2/jitter/vm_mngr_py.c",
|
||||
"miasm2/jitter/arch/JitCore.c",
|
||||
"miasm2/jitter/vm_mngr_py.c"]),
|
||||
Extension("miasm2.jitter.arch.JitCore_x86",
|
||||
["miasm2/jitter/arch/JitCore.c",
|
||||
"miasm2/jitter/arch/JitCore_x86.c"]),
|
||||
Extension("miasm2.jitter.arch.JitCore_arm",
|
||||
["miasm2/jitter/vm_mngr.c",
|
||||
"miasm2/jitter/vm_mngr_py.c",
|
||||
"miasm2/jitter/arch/JitCore.c",
|
||||
["miasm2/jitter/arch/JitCore.c",
|
||||
"miasm2/jitter/arch/JitCore_arm.c"]),
|
||||
Extension("miasm2.jitter.arch.JitCore_msp430",
|
||||
["miasm2/jitter/vm_mngr.c",
|
||||
"miasm2/jitter/vm_mngr_py.c",
|
||||
"miasm2/jitter/arch/JitCore.c",
|
||||
["miasm2/jitter/arch/JitCore.c",
|
||||
"miasm2/jitter/arch/JitCore_msp430.c"]),
|
||||
Extension("miasm2.jitter.arch.JitCore_mips32",
|
||||
["miasm2/jitter/vm_mngr.c",
|
||||
"miasm2/jitter/vm_mngr_py.c",
|
||||
"miasm2/jitter/arch/JitCore.c",
|
||||
["miasm2/jitter/arch/JitCore.c",
|
||||
"miasm2/jitter/arch/JitCore_mips32.c"]),
|
||||
Extension("miasm2.jitter.Jitllvm",
|
||||
["miasm2/jitter/Jitllvm.c"]),
|
||||
|
||||
Reference in New Issue
Block a user