in mozetl/bhr_collection/bhr_collection.py [0:0]
def make_sym_map(data):
public_symbols = {}
func_symbols = {}
for line in data.splitlines():
line = line.decode("utf-8")
if line.startswith("PUBLIC "):
line = line.rstrip()
fields = line.split(" ", 3)
m_offset = 0
if fields[1] == "m":
m_offset = 1
fields = line.split(" ", 4)
if len(fields) < 4 + m_offset:
raise ValueError("Failed to parse address - line: {}".format(line))
address = int(fields[1 + m_offset], 16)
symbol = fields[3 + m_offset]
public_symbols[address] = symbol[:SYMBOL_TRUNCATE_LENGTH]
elif line.startswith("FUNC "):
line = line.rstrip()
fields = line.split(" ", 4)
m_offset = 0
if fields[1] == "m":
m_offset = 1
fields = line.split(" ", 5)
if len(fields) == 4 + m_offset:
symbol = "(no symbol)"
elif len(fields) < 4 + m_offset:
raise ValueError("Failed to parse address - line: {}".format(line))
else:
symbol = fields[4 + m_offset]
address = int(fields[1 + m_offset], 16)
func_symbols[address] = symbol[:SYMBOL_TRUNCATE_LENGTH]
# Prioritize PUBLIC symbols over FUNC ones
sym_map = func_symbols
sym_map.update(public_symbols)
return sorted(sym_map), sym_map