Так как вывод битового кода LLVM кажется невозможным, я написал скрипт на python, который затем передает IR в llvm-as , который затем дает мне битовый код.С точки зрения производительности это катастрофа, но, по крайней мере, она работает.
#/usr/bin/env python
import sys, subprocess
args = list(sys.argv)
del args[0] # Remove our exec name
compiler = args[0]
del args[0] # Remove the compile name
compileArguments = [compiler]
outputFile = ''
foundFile = False
for arg in args:
if arg.startswith('-o'):
foundFile = True
elif foundFile:
outputFile = arg
foundFile = False
arg = "/dev/stdout"
compileArguments.append(arg)
compileProcess = subprocess.Popen(compileArguments, stdout=subprocess.PIPE)
asbin = 'llvm-as'
ir2bcProcess = subprocess.Popen([asbin, '-f', '-o=' + outputFile], stdin=compileProcess.stdout)
stdout, stderr = ir2bcProcess.communicate()
compileProcess.wait()
ir2bcProcess.wait()