forked from M-Labs/artiq
1
0
Fork 0

devices/runtime: support dumping of ELF object via ARTIQ_DUMP_OBJECT environment variable

This commit is contained in:
Sebastien Bourdeauducq 2014-09-17 18:03:54 +08:00
parent af6457c5fa
commit 9af0e9c91a
1 changed files with 22 additions and 0 deletions

View File

@ -1,3 +1,5 @@
import os
from llvm import core as lc from llvm import core as lc
from llvm import target as lt from llvm import target as lt
@ -72,6 +74,25 @@ class LinkInterface:
return r return r
def _debug_dump_obj(obj):
try:
env = os.environ["ARTIQ_DUMP_OBJECT"]
except KeyError:
return
for i in range(1000):
filename = "{}_{:03d}.elf".format(env, i)
try:
f = open(filename, "xb")
except FileExistsError:
pass
else:
f.write(obj)
f.close()
return
raise IOError
class Environment(LinkInterface): class Environment(LinkInterface):
def __init__(self, ref_period): def __init__(self, ref_period):
self.ref_period = ref_period self.ref_period = ref_period
@ -80,4 +101,5 @@ class Environment(LinkInterface):
def emit_object(self): def emit_object(self):
tm = lt.TargetMachine.new(triple="or1k", cpu="generic") tm = lt.TargetMachine.new(triple="or1k", cpu="generic")
obj = tm.emit_object(self.llvm_module) obj = tm.emit_object(self.llvm_module)
_debug_dump_obj(obj)
return obj return obj