Skip to content

Instantly share code, notes, and snippets.

@juntalis
Created December 7, 2012 19:28
Show Gist options
  • Select an option

  • Save juntalis/4235803 to your computer and use it in GitHub Desktop.

Select an option

Save juntalis/4235803 to your computer and use it in GitHub Desktop.
CTypes Bindings to libjit
from ctypes import *
_libraries = {}
_libraries['libjit-0.dll'] = CDLL('libjit-0.dll')
STRING = c_char_p
jit_abi_vararg = 1
jit_abi_cdecl = 0
jit_abi_fastcall = 3
jit_abi_stdcall = 2
jit_sbyte = c_char
jit_ubyte = c_ubyte
jit_short = c_short
jit_ushort = c_ushort
jit_int = c_int
jit_uint = c_uint
jit_nint = c_int
jit_nuint = c_uint
jit_long = c_longlong
jit_ulong = c_ulonglong
jit_float32 = c_float
jit_float64 = c_double
jit_nfloat = c_longdouble
jit_ptr = c_void_p
class _jit_context(Structure):
pass
jit_context_t = POINTER(_jit_context)
_jit_context._fields_ = [
]
class _jit_function(Structure):
pass
_jit_function._fields_ = [
]
jit_function_t = POINTER(_jit_function)
class _jit_block(Structure):
pass
_jit_block._fields_ = [
]
jit_block_t = POINTER(_jit_block)
class _jit_insn(Structure):
pass
_jit_insn._fields_ = [
]
jit_insn_t = POINTER(_jit_insn)
class _jit_value(Structure):
pass
jit_value_t = POINTER(_jit_value)
_jit_value._fields_ = [
]
class _jit_type(Structure):
pass
jit_type_t = POINTER(_jit_type)
_jit_type._fields_ = [
]
class jit_stack_trace(Structure):
pass
jit_stack_trace._fields_ = [
]
jit_stack_trace_t = POINTER(jit_stack_trace)
jit_label_t = jit_nuint
jit_meta_free_func = CFUNCTYPE(None, c_void_p)
jit_on_demand_func = CFUNCTYPE(c_int, jit_function_t)
jit_on_demand_driver_func = CFUNCTYPE(c_void_p, jit_function_t)
jit_type_void = (jit_type_t).in_dll(_libraries['libjit-0.dll'], 'jit_type_void')
jit_type_sbyte = (jit_type_t).in_dll(_libraries['libjit-0.dll'], 'jit_type_sbyte')
jit_type_ubyte = (jit_type_t).in_dll(_libraries['libjit-0.dll'], 'jit_type_ubyte')
jit_type_short = (jit_type_t).in_dll(_libraries['libjit-0.dll'], 'jit_type_short')
jit_type_ushort = (jit_type_t).in_dll(_libraries['libjit-0.dll'], 'jit_type_ushort')
jit_type_int = (jit_type_t).in_dll(_libraries['libjit-0.dll'], 'jit_type_int')
jit_type_uint = (jit_type_t).in_dll(_libraries['libjit-0.dll'], 'jit_type_uint')
jit_type_nint = (jit_type_t).in_dll(_libraries['libjit-0.dll'], 'jit_type_nint')
jit_type_nuint = (jit_type_t).in_dll(_libraries['libjit-0.dll'], 'jit_type_nuint')
jit_type_long = (jit_type_t).in_dll(_libraries['libjit-0.dll'], 'jit_type_long')
jit_type_ulong = (jit_type_t).in_dll(_libraries['libjit-0.dll'], 'jit_type_ulong')
jit_type_float32 = (jit_type_t).in_dll(_libraries['libjit-0.dll'], 'jit_type_float32')
jit_type_float64 = (jit_type_t).in_dll(_libraries['libjit-0.dll'], 'jit_type_float64')
jit_type_nfloat = (jit_type_t).in_dll(_libraries['libjit-0.dll'], 'jit_type_nfloat')
jit_type_void_ptr = (jit_type_t).in_dll(_libraries['libjit-0.dll'], 'jit_type_void_ptr')
jit_type_sys_bool = (jit_type_t).in_dll(_libraries['libjit-0.dll'], 'jit_type_sys_bool')
jit_type_sys_char = (jit_type_t).in_dll(_libraries['libjit-0.dll'], 'jit_type_sys_char')
jit_type_sys_schar = (jit_type_t).in_dll(_libraries['libjit-0.dll'], 'jit_type_sys_schar')
jit_type_sys_uchar = (jit_type_t).in_dll(_libraries['libjit-0.dll'], 'jit_type_sys_uchar')
jit_type_sys_short = (jit_type_t).in_dll(_libraries['libjit-0.dll'], 'jit_type_sys_short')
jit_type_sys_ushort = (jit_type_t).in_dll(_libraries['libjit-0.dll'], 'jit_type_sys_ushort')
jit_type_sys_int = (jit_type_t).in_dll(_libraries['libjit-0.dll'], 'jit_type_sys_int')
jit_type_sys_uint = (jit_type_t).in_dll(_libraries['libjit-0.dll'], 'jit_type_sys_uint')
jit_type_sys_long = (jit_type_t).in_dll(_libraries['libjit-0.dll'], 'jit_type_sys_long')
jit_type_sys_ulong = (jit_type_t).in_dll(_libraries['libjit-0.dll'], 'jit_type_sys_ulong')
jit_type_sys_longlong = (jit_type_t).in_dll(_libraries['libjit-0.dll'], 'jit_type_sys_longlong')
jit_type_sys_ulonglong = (jit_type_t).in_dll(_libraries['libjit-0.dll'], 'jit_type_sys_ulonglong')
jit_type_sys_float = (jit_type_t).in_dll(_libraries['libjit-0.dll'], 'jit_type_sys_float')
jit_type_sys_double = (jit_type_t).in_dll(_libraries['libjit-0.dll'], 'jit_type_sys_double')
jit_type_sys_long_double = (jit_type_t).in_dll(_libraries['libjit-0.dll'], 'jit_type_sys_long_double')
# values for enumeration 'jit_abi_t'
jit_abi_t = c_int # enum
jit_closure_func = CFUNCTYPE(None, jit_type_t, c_void_p, POINTER(c_void_p), c_void_p)
class jit_closure_va_list(Structure):
pass
jit_closure_va_list_t = POINTER(jit_closure_va_list)
jit_closure_va_list._fields_ = [
]
class jit_debugger(Structure):
pass
jit_debugger_t = POINTER(jit_debugger)
jit_debugger._fields_ = [
]
jit_debugger_thread_id_t = jit_nint
jit_debugger_breakpoint_id_t = jit_nint
class jit_debugger_event(Structure):
pass
jit_debugger_event._fields_ = [
('type', c_int),
('thread', jit_debugger_thread_id_t),
('function', jit_function_t),
('data1', jit_nint),
('data2', jit_nint),
('id', jit_debugger_breakpoint_id_t),
('trace', jit_stack_trace_t),
]
jit_debugger_event_t = jit_debugger_event
class jit_debugger_breakpoint_info(Structure):
pass
jit_debugger_breakpoint_info._fields_ = [
('flags', c_int),
('thread', jit_debugger_thread_id_t),
('function', jit_function_t),
('data1', jit_nint),
('data2', jit_nint),
]
jit_debugger_breakpoint_info_t = POINTER(jit_debugger_breakpoint_info)
jit_debugger_hook_func = CFUNCTYPE(None, jit_function_t, jit_nint, jit_nint)
class jit_readelf(Structure):
pass
jit_readelf._fields_ = [
]
jit_readelf_t = POINTER(jit_readelf)
class jit_writeelf(Structure):
pass
jit_writeelf_t = POINTER(jit_writeelf)
jit_writeelf._fields_ = [
]
jit_exception_func = CFUNCTYPE(c_void_p, c_int)
class jit_intrinsic_descr_t(Structure):
pass
jit_intrinsic_descr_t._fields_ = [
('return_type', jit_type_t),
('ptr_result_type', jit_type_t),
('arg1_type', jit_type_t),
('arg2_type', jit_type_t),
]
class jit_insn_iter_t(Structure):
pass
jit_insn_iter_t._fields_ = [
('block', jit_block_t),
('posn', c_int),
]
class _jit_meta(Structure):
pass
jit_meta_t = POINTER(_jit_meta)
_jit_meta._fields_ = [
]
class jit_objmodel(Structure):
pass
jit_objmodel._fields_ = [
]
jit_objmodel_t = POINTER(jit_objmodel)
class jitom_class(Structure):
pass
jitom_class._fields_ = [
]
jitom_class_t = POINTER(jitom_class)
class jitom_field(Structure):
pass
jitom_field_t = POINTER(jitom_field)
jitom_field._fields_ = [
]
class jitom_method(Structure):
pass
jitom_method_t = POINTER(jitom_method)
jitom_method._fields_ = [
]
class jit_opcode_info(Structure):
pass
jit_opcode_info_t = jit_opcode_info
jit_opcode_info._fields_ = [
('name', STRING),
('flags', c_int),
]
jit_opcodes = (jit_opcode_info_t * 422).in_dll(_libraries['libjit-0.dll'], 'jit_opcodes')
class _jit_arch_unwind_t(Structure):
pass
_jit_arch_unwind_t._fields_ = [
('ebx', c_int),
('esi', c_int),
('edi', c_int),
('ebp', c_int),
('esp', c_int),
]
class jit_unwind_context_t(Structure):
pass
jit_unwind_context_t._fields_ = [
('frame', c_void_p),
('cache', c_void_p),
('context', jit_context_t),
]
class N14jit_constant_t3DOLLAR_6E(Union):
pass
N14jit_constant_t3DOLLAR_6E._fields_ = [
('ptr_value', c_void_p),
('int_value', jit_int),
('uint_value', jit_uint),
('nint_value', jit_nint),
('nuint_value', jit_nuint),
('long_value', jit_long),
('ulong_value', jit_ulong),
('float32_value', jit_float32),
('float64_value', jit_float64),
('nfloat_value', jit_nfloat),
]
class jit_constant_t(Structure):
pass
jit_constant_t._fields_ = [
('type', jit_type_t),
('un', N14jit_constant_t3DOLLAR_6E),
]
class jit_crawl_mark_t(Structure):
pass
jit_crawl_mark_t._fields_ = [
('mark', c_void_p),
]
__all__ = ['jit_type_void', 'jit_ulong', 'jit_readelf_t',
'jit_type_uint', 'jit_ubyte', 'jitom_class',
'jit_writeelf_t', 'jit_type_short', 'jit_float32',
'jit_label_t', 'jit_uint', 'jit_type_sys_uchar',
'jit_type_sys_ulong', 'jit_nuint', 'jit_type_sys_int',
'jit_type_sys_long_double', 'jit_type_nfloat',
'jit_type_sys_ulonglong', 'jit_short', '_jit_function',
'jit_abi_stdcall', 'jit_readelf', 'jit_opcodes',
'jit_type_float32', 'jit_meta_free_func',
'jit_type_sys_schar', 'jitom_field',
'jit_unwind_context_t', 'jit_debugger_event_t',
'jit_meta_t', '_jit_value', 'jit_long', 'jit_writeelf',
'jitom_field_t', 'jit_abi_cdecl', 'jit_debugger_hook_func',
'jit_objmodel_t', 'jit_debugger_breakpoint_id_t',
'jit_type_sys_short', 'jit_stack_trace_t',
'jit_on_demand_driver_func', 'jit_closure_va_list',
'jit_constant_t', 'jit_function_t', 'jit_type_ubyte',
'jit_sbyte', 'jit_type_sys_char', 'jit_crawl_mark_t',
'jit_debugger_t', 'jit_type_nint', 'jit_float64',
'_jit_arch_unwind_t', 'jit_insn_t', '_jit_insn',
'jit_closure_va_list_t', 'jit_type_int',
'jit_debugger_event', 'jit_stack_trace',
'jit_on_demand_func', 'jit_nint',
'jit_debugger_breakpoint_info_t', 'jit_nfloat',
'jit_type_t', 'jit_type_ulong', 'jit_value_t',
'jit_type_sys_bool', 'jit_type_sbyte', '_jit_block',
'jit_type_sys_double', 'jit_intrinsic_descr_t',
'jit_type_sys_longlong', 'jit_context_t',
'jit_type_sys_float', 'jit_block_t', 'jit_type_sys_long',
'jit_ushort', 'jit_type_long', 'jit_type_void_ptr',
'jit_objmodel', 'jit_ptr', 'jitom_method',
'jit_type_float64', 'jit_abi_t', 'jit_type_ushort',
'jit_opcode_info_t', 'jit_debugger_thread_id_t',
'_jit_context', 'jitom_method_t', 'jitom_class_t',
'_jit_meta', 'jit_abi_fastcall', 'jit_debugger',
'jit_exception_func', 'jit_insn_iter_t', '_jit_type',
'jit_type_nuint', 'N14jit_constant_t3DOLLAR_6E',
'jit_type_sys_uint', 'jit_closure_func', 'jit_opcode_info',
'jit_int', 'jit_abi_vararg', 'jit_type_sys_ushort',
'jit_debugger_breakpoint_info']
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment