size_report: generate multiple reports

Generate both ram/rom reports in one call.

Signed-off-by: Anas Nashif <anas.nashif@intel.com>
This commit is contained in:
Anas Nashif 2021-06-06 17:02:19 -04:00
commit e230e00677

View file

@ -717,7 +717,7 @@ def parse_args():
help="Output path")
parser.add_argument("-w", "--workspace", default=None,
help="Workspace path (Usually the same as WEST_TOPDIR)")
parser.add_argument("target", choices=['rom', 'ram'])
parser.add_argument("target", choices=['rom', 'ram', 'all'])
parser.add_argument("-d", "--depth", dest="depth",
type=int, default=None,
help="How deep should we go into the tree",
@ -738,6 +738,14 @@ def main():
init()
assert os.path.exists(args.kernel), "{0} does not exist.".format(args.kernel)
if args.target == 'ram':
targets = ['ram']
elif args.target == 'rom':
targets = ['rom']
elif args.target == 'all':
targets = ['rom', 'ram']
for t in targets:
elf = ELFFile(open(args.kernel, "rb"))
@ -753,14 +761,15 @@ def main():
print("WARN: Symbol '{0}' is not in RAM or ROM".format(sym['name']))
symbol_dict = None
if args.target == 'rom':
symbol_dict = symbols['rom']
symsize = addr_ranges['rom_total_size']
ranges = addr_ranges['rom']
elif args.target == 'ram':
symbol_dict = symbols['ram']
symsize = addr_ranges['ram_total_size']
ranges = addr_ranges['ram']
if args.json:
jsonout = args.json
else:
jsonout = os.path.join(args.output, f'{t}.json')
symbol_dict = symbols[t]
symsize = addr_ranges[f'{t}_total_size']
ranges = addr_ranges[t]
if symbol_dict is not None:
processed = {"mapped_symbols": set(),
@ -782,12 +791,11 @@ def main():
if not args.quiet:
print_any_tree(root, symsize, args.depth)
if args.json:
exporter = DictExporter()
data = dict()
data["symbols"] = exporter.export(root)
data["total_size"] = symsize
with open(args.json, "w") as fp:
with open(jsonout, "w") as fp:
json.dump(data, fp, indent=4)