Skip to content

Instantly share code, notes, and snippets.

@Heasummn
Created June 30, 2016 06:29
Show Gist options
  • Save Heasummn/3776762309337b7c3326d0fc26c3ae65 to your computer and use it in GitHub Desktop.
Save Heasummn/3776762309337b7c3326d0fc26c3ae65 to your computer and use it in GitHub Desktop.
Incorrect Executable type generated by llvmlite
>>> from llvmlite import ir
>>> from llvmlite import binding as llvm
>>> llvm.initialize()
>>> llvm.initialize_native_asmprinter()
>>> llvm.initialize_native_target()
>>> target = llvm.Target.from_default_triple()
>>> target.triple
'x86_64-pc-windows-msvc'
>>> llvm.get_object_format("x86_64-pc-windows-msvc")
COFF
>>> target_machine = target.create_target_machine()
>>> assembly = """; ModuleID = "examples/ir_fpadd.py" # Stolen from examples
... target triple = "unknown-unknown-unknown"
... target datalayout = ""
...
... define double @"fpadd"(double %".1", double %".2")
... {
... entry:
... %"res" = fadd double %".1", %".2"
... ret double %"res"
... }
...
... define i32 @"main"()
... {
... entry:
... tail call double @fpadd(double 12.0, double 18.0)
... ret i32 0
... }"""
>>> mod = llvm.parse_assembly(assembly)
>>> mod.verify()
>>> engine = llvm.create_mcjit_compiler(mod, target_machine)
>>> engine.finalize_object()
>>> object = open("test.exe", "wb")
>>> object.write(target_machine.emit_object(mod))
1312
>>> object.close()
$ file test.exe
test.exe: ELF 64-bit LSB relocatable, x86-64, version 1 (SYSV), not stripped
@Heasummn
Copy link
Author

Heasummn commented Jul 1, 2016

The # Stolen from examples was added in later. That did not exist in the actual code.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment