From 40b737e33d98f0b56c2dfee94dcd53563a39fd19 Mon Sep 17 00:00:00 2001 From: Yuri D'Elia Date: Wed, 2 Jun 2021 18:13:43 +0200 Subject: [PATCH] elf_mem_map: switch to a named tuple for extensibility --- tools/elf_mem_map | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/tools/elf_mem_map b/tools/elf_mem_map index ddfd5706..aad957b9 100755 --- a/tools/elf_mem_map +++ b/tools/elf_mem_map @@ -2,6 +2,7 @@ import argparse import elftools.elf.elffile import elftools.dwarf.descriptions +from collections import namedtuple from struct import unpack SRAM_OFFSET = 0x800000 @@ -9,6 +10,9 @@ EEPROM_OFFSET = 0x810000 FILL_BYTE = b'\0' +Entry = namedtuple('Entry', ['name', 'loc', 'size']) + + def get_elf_globals(path): fd = open(path, "rb") if fd is None: @@ -60,7 +64,7 @@ def get_elf_globals(path): continue size = byte_size.value - grefs.append([name, loc, size]) + grefs.append(Entry(name, loc, size)) return grefs @@ -106,14 +110,14 @@ def decode_dump(path): def annotate_refs(grefs, addr, data, width=45, gaps=True): last_end = None - for name, loc, size in grefs: - if loc < addr: + for entry in grefs: + if entry.loc < addr: continue - if loc + size > addr + len(data): + if entry.loc + entry.size > addr + len(data): continue - pos = loc-addr - end_pos = pos + size + pos = entry.loc-addr + end_pos = pos + entry.size buf = data[pos:end_pos] buf_repr = '' @@ -131,15 +135,15 @@ def annotate_refs(grefs, addr, data, width=45, gaps=True): print('{:04x} {} {:4} R:{}'.format(addr+last_end, "*UNKNOWN*".ljust(width), gap_size, gap_buf.hex())) - print('{:04x} {} {:4}{} R:{}'.format(loc, name.ljust(width), size, - buf_repr, buf.hex())) + print('{:04x} {} {:4}{} R:{}'.format(entry.loc, entry.name.ljust(width), + entry.size, buf_repr, buf.hex())) last_end = end_pos def print_map(grefs): print('OFFSET\tSIZE\tNAME') - for name, loc, size in grefs: - print('{:x}\t{}\t{}'.format(loc, size, name)) + for entry in grefs: + print('{:x}\t{}\t{}'.format(entry.loc, entry.size, entry.name)) def main(): @@ -156,7 +160,7 @@ def main(): args = ap.parse_args() grefs = get_elf_globals(args.elf) - grefs = list(sorted(grefs, key=lambda x: x[1])) + grefs = list(sorted(grefs, key=lambda x: x.loc)) if args.dump is None: print_map(grefs) else: