Skip to content

Commit 0e3aa6d

Browse files
committed
Improve parsing of diassembly arguments
Signed-off-by: Dave Rodgman <dave.rodgman@arm.com>
1 parent f1c8aa9 commit 0e3aa6d

File tree

1 file changed

+8
-7
lines changed

1 file changed

+8
-7
lines changed

tools/bin/mtest

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -450,9 +450,8 @@ def disassemble(target):
450450
objdump = toolchain(target)["OBJDUMP"]
451451
objfiles = ["library/libmbedcrypto.a", "library/libmbedtls.a", "library/libmbedx509.a" ] + args.build_targets
452452
objfiles = [f"{ROOT}/{f}" for f in objfiles if os.path.exists(f"{ROOT}/{f}")]
453-
fns = [None] if len(args.disassemble) == 0 else args.disassemble
454453
result = []
455-
for fn in fns:
454+
for fn in args.disassemble:
456455
if fn is None:
457456
disarg = "--disassemble"
458457
else:
@@ -470,8 +469,11 @@ def disassemble(target):
470469
if found and re.search(r"[\w_]+.o:\s+file format", l): break
471470
if found and l.strip().startswith("Disassembly of section"): break
472471
if found: diss.append(l)
473-
while len(diss) > 0 and diss[-1] == "": diss = diss[:-1]
474-
result.append("\n".join(diss))
472+
if not found:
473+
result.append(f"<{fn}>: function not found - maybe the function gets inlined?")
474+
else:
475+
while len(diss) > 0 and diss[-1] == "": diss = diss[:-1]
476+
result.append("\n".join(diss))
475477
return "\n\n".join(result)
476478

477479

@@ -644,7 +646,7 @@ Build targets: build the library by default, or files (e.g. aes.o), programs (e.
644646
parser.add_argument('-A', '--asan', action="store_true", default=False, help="make an ASAN build")
645647
parser.add_argument('-W', '--no-warnings', action="store_true", default=False, help="disable warnings")
646648
parser.add_argument('-C', '--no-clean', action="store_true", default=False, help="don't run make clean (if building for a single target)")
647-
parser.add_argument('-d', '--disassemble', metavar='function', nargs='*', default=None, help="disassemble specified function(s) (or everything if no function specified)")
649+
parser.add_argument('-d', '--disassemble', metavar='function', action='append', nargs='?', help="disassemble specified function(s) (or everything if no function specified)")
648650
parser.add_argument('-s', '--size', action="store_true", default=False, help="display size of library / given build target")
649651
parser.add_argument('-S', '--size-tfm', action="store_true", default=False, help=f"as --size, but use the TF-M config file and build with {SIZE_TFM_COMPILER} -Oz for Cortex-M33")
650652
parser.add_argument('-j', '--jobs', nargs='?', const=-1, metavar='N', action="store", type=int, help="enable parallel builds, like 'make -j'. Alternatively, set the MAKEFLAGS environment variable")
@@ -867,8 +869,7 @@ def main():
867869
if args.disassemble is not None:
868870
if can_disassemble(target):
869871
d = disassemble(target)
870-
distgt = '' if len(args.disassemble) == 0 else ' for ' + ", ".join(args.disassemble)
871-
log(f"Disassembly{distgt}:")
872+
log(f"Disassembly:")
872873
print(d)
873874
print()
874875
else:

0 commit comments

Comments
 (0)