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)
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)
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)
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)
def jit_tcc_compil(self, func_name, func_code): return Jittcc.tcc_compil(func_name, func_code)
def __del__(self): for tcc_state in self.states.values(): Jittcc.tcc_end(tcc_state)
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]
def __call__(self, cpu, vm): return Jittcc.tcc_exec_bloc(self.c, cpu, vm)
def __del__(self): for tcc_state in self.tcc_states.values(): Jittcc.tcc_end(tcc_state)
def jit_tcc_compil(func_name, func_code): global Jittcc c = Jittcc.tcc_compil(func_name, func_code) return c
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]