[meson] Add disassembly output as a target
diff --git a/meson.build b/meson.build index 1df4b00..279b5ad 100644 --- a/meson.build +++ b/meson.build
@@ -41,6 +41,7 @@ # Common program references. prog_python = import('python').find_installation('python3') +prog_objdump = find_program('objdump') prog_objcopy = find_program('objcopy') prog_srec_cat = find_program('srec_cat') prog_git = find_program('git') @@ -55,9 +56,9 @@ # Additional arguments for utility in charge of generating bin and vmem outputs # These variables are expected to be used in custom_target rules. -embedded_target_output = ['@BASENAME@.bin', '@BASENAME@.vmem'] +embedded_target_output = ['@BASENAME@.bin', '@BASENAME@.dis', '@BASENAME@.vmem'] embedded_target_args = [prog_python, '../util/embedded_target.py', - '--objcopy', prog_objcopy, '--srec_cat', prog_srec_cat, + '--objcopy', prog_objcopy, '--srec_cat', prog_srec_cat, '--objdump', prog_objdump, '--input', '@INPUT@', '--basename', '@BASENAME@', '--outdir', '@OUTDIR@'] # Hardware register headers. These are generated from HJSON files, and accesible
diff --git a/util/embedded_target.py b/util/embedded_target.py index fc32d36..280cbe6 100644 --- a/util/embedded_target.py +++ b/util/embedded_target.py
@@ -14,6 +14,14 @@ import sys +def run_objdump(objdump, input, basename, outdir): + filename = basename + '.dis' + output = os.path.join(outdir, filename) + f = open(output, "w") + cmd = [objdump, '-SD', input, ] + subprocess.run(cmd, stdout=f, check=True) + return output + def run_objcopy(objcopy, input, basename, outdir): filename = basename + '.bin' output = os.path.join(outdir, filename) @@ -52,6 +60,11 @@ required=True, help='Absolute path to objcopy tool.') parser.add_argument( + '--objdump', + '-p', + required=True, + help='Absolute path to objdump tool.') + parser.add_argument( '--outdir', '-d', required=True, @@ -67,6 +80,7 @@ os.makedirs(args.outdir) bin_file = run_objcopy(args.objcopy, args.input, args.basename, args.outdir) + run_objdump(args.objdump, args.input, args.basename, args.outdir) run_srec_cat(args.srec_cat, bin_file, args.basename, args.outdir)