Prusa-Firmware/lang/lib/io.py

36 lines
849 B
Python

import os
import sys
import ast
def info(msg):
print(os.path.basename(sys.argv[0]) + ": " + msg)
def warn(msg):
print(os.path.basename(sys.argv[0]) + ": " + msg, file=sys.stderr)
def fatal(msg):
warn(msg)
exit(1)
def load_map(path):
fd = open(path, "r")
# check the header
if fd.readline() != 'OFFSET\tSIZE\tNAME\tID\tSTRING\n':
fatal("invalid map file")
# parse symbols
syms = []
for line in fd:
line = line.rstrip('\n')
offset, size, name, tr_id, data = line.split('\t', 4)
data = ast.literal_eval(data)
tr_id = int(tr_id) if len(tr_id) else None
syms.append({'offset': int(offset, 16),
'size': int(size, 16),
'id': tr_id,
'name': name,
'data': data})
return syms