예제 #1
0
    def load(self):
        # 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__
        include_dir = os.path.dirname(jittcc_path)
        include_dir += ";" + os.path.join(include_dir, "arch")
        # print include_dir

        # XXX HACK
        # As debian/ubuntu have moved some include files using arch directory,
        # TCC doesn't know them, so we get the info from GCC
        # For example /usr/include/x86_64-linux-gnu which contains limits.h
        p = Popen(["cc", "-Wp,-v", "-E", "-"],
                  stdout=PIPE,
                  stderr=PIPE,
                  stdin=PIPE)
        p.stdin.close()
        include_files = p.stderr.read().split('\n')
        include_files = [
            x[1:] for x in include_files if x.startswith(' /usr/include')
        ]
        include_files += [include_dir, get_python_inc()]
        include_files = ";".join(include_files)
        Jittcc.tcc_set_emul_lib_path(include_files, libs)
예제 #2
0
파일: jitcore_tcc.py 프로젝트: Junraa/miasm
    def load(self):
        # 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__
        include_dir = os.path.dirname(jittcc_path)
        include_dir += ";" + os.path.join(include_dir, "arch")
        # print include_dir

        # XXX HACK
        # As debian/ubuntu have moved some include files using arch directory,
        # TCC doesn't know them, so we get the info from GCC
        # For example /usr/include/x86_64-linux-gnu which contains limits.h
        p = Popen(["cc", "-Wp,-v", "-E", "-"],
                  stdout=PIPE, stderr=PIPE, stdin=PIPE)
        p.stdin.close()
        include_files = p.stderr.read().split('\n')
        include_files = [x[1:]
                         for x in include_files if x.startswith(' /usr/include')]
        include_files += [include_dir, get_python_inc()]
        include_files = ";".join(include_files)
        Jittcc.tcc_set_emul_lib_path(include_files, libs)
예제 #3
0
    def load(self):
        super(JitCore_Tcc, self).load()
        libs = ';'.join(self.libs)
        jittcc_path = Jittcc.__file__
        include_dir = os.path.dirname(jittcc_path)
        include_dir += ";" + os.path.join(include_dir, "arch")

        # XXX HACK
        # As debian/ubuntu have moved some include files using arch directory,
        # TCC doesn't know them, so we get the info from CC
        # For example /usr/include/x86_64-linux-gnu which contains limits.h
        p = Popen(["cc", "-Wp,-v", "-E", "-"],
                  stdout=PIPE, stderr=PIPE, stdin=PIPE)
        p.stdin.close()
        include_files = p.stderr.read().split('\n')
        include_files = [x[1:]
                         for x in include_files if x.startswith(' /usr/include')]
        include_files += self.include_files
        include_files = ";".join(include_files)
        Jittcc.tcc_set_emul_lib_path(include_files, libs)
예제 #4
0
    def load(self):
        super(JitCore_Tcc, self).load()
        libs = ';'.join(self.libs)
        jittcc_path = Jittcc.__file__
        include_dir = os.path.dirname(jittcc_path)
        include_dir += ";" + os.path.join(include_dir, "arch")

        # XXX HACK
        # As debian/ubuntu have moved some include files using arch directory,
        # TCC doesn't know them, so we get the info from CC
        # For example /usr/include/x86_64-linux-gnu which contains limits.h
        p = Popen(["cc", "-Wp,-v", "-E", "-"],
                  stdout=PIPE,
                  stderr=PIPE,
                  stdin=PIPE)
        p.stdin.close()
        include_files = p.stderr.read().split('\n')
        include_files = [
            x[1:] for x in include_files if x.startswith(' /usr/include')
        ]
        include_files += self.include_files
        include_files = ";".join(include_files)
        Jittcc.tcc_set_emul_lib_path(include_files, libs)
예제 #5
0
 def jit_tcc_compil(self, func_name, func_code):
     return Jittcc.tcc_compil(func_name, func_code)
예제 #6
0
 def __del__(self):
     for tcc_state in self.states.values():
         Jittcc.tcc_end(tcc_state)
예제 #7
0
 def deleteCB(self, offset):
     "Free the TCCState corresponding to @offset"
     if offset in self.states:
         Jittcc.tcc_end(self.states[offset])
         del self.states[offset]
예제 #8
0
파일: jitcore_tcc.py 프로젝트: Junraa/miasm
 def __call__(self, cpu, vm):
     return Jittcc.tcc_exec_bloc(self.c, cpu, vm)
예제 #9
0
파일: jitcore_tcc.py 프로젝트: Junraa/miasm
 def __del__(self):
     for tcc_state in self.tcc_states.values():
         Jittcc.tcc_end(tcc_state)
예제 #10
0
파일: jitcore_tcc.py 프로젝트: Junraa/miasm
def jit_tcc_compil(func_name, func_code):
    global Jittcc
    c = Jittcc.tcc_compil(func_name, func_code)
    return c
예제 #11
0
파일: jitcore_tcc.py 프로젝트: Junraa/miasm
 def deleteCB(self, offset):
     "Free the TCCState corresponding to @offset"
     if offset in self.tcc_states:
         Jittcc.tcc_end(self.tcc_states[offset])
         del self.tcc_states[offset]
예제 #12
0
 def __call__(self, cpu, vm):
     return Jittcc.tcc_exec_bloc(self.c, cpu, vm)
예제 #13
0
def jit_tcc_compil(func_name, func_code):
    global Jittcc
    c = Jittcc.tcc_compil(func_name, func_code)
    return c
예제 #14
0
 def jit_tcc_compil(self, func_name, func_code):
     return Jittcc.tcc_compil(func_name, func_code)