36 lines
849 B
Python
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
|