mirror of
https://github.com/jeremysrand/llvm-65816.git
synced 2024-11-15 18:05:09 +00:00
32 lines
884 B
Python
32 lines
884 B
Python
|
|
from .common import LLVMObject
|
|
from .common import c_object_p
|
|
from .common import get_library
|
|
from . import enumerations
|
|
from .core import MemoryBuffer
|
|
from .core import Module
|
|
from .core import OpCode
|
|
from ctypes import POINTER
|
|
from ctypes import byref
|
|
from ctypes import c_char_p
|
|
from ctypes import cast
|
|
__all__ = ['parse_bitcode']
|
|
lib = get_library()
|
|
|
|
def parse_bitcode(mem_buffer):
|
|
"""Input is .core.MemoryBuffer"""
|
|
module = c_object_p()
|
|
out = c_char_p(None)
|
|
result = lib.LLVMParseBitcode(mem_buffer, byref(module), byref(out))
|
|
if result:
|
|
raise RuntimeError('LLVM Error: %s' % out.value)
|
|
m = Module(module)
|
|
m.take_ownership(mem_buffer)
|
|
return m
|
|
|
|
def register_library(library):
|
|
library.LLVMParseBitcode.argtypes = [MemoryBuffer, POINTER(c_object_p), POINTER(c_char_p)]
|
|
library.LLVMParseBitcode.restype = bool
|
|
|
|
register_library(lib)
|