| Index: pydir/run-llvm2ice.py
|
| diff --git a/pydir/run-llvm2ice.py b/pydir/run-llvm2ice.py
|
| index 3be4e0512ae979b53dd8eaf1ca76b8d9562787d8..d4cdc43712de5d6d42c747b70baae93fc81efaf8 100755
|
| --- a/pydir/run-llvm2ice.py
|
| +++ b/pydir/run-llvm2ice.py
|
| @@ -6,6 +6,7 @@ import os
|
| import re
|
| import subprocess
|
| import sys
|
| +import tempfile
|
|
|
| from utils import shellcmd
|
|
|
| @@ -43,6 +44,15 @@ def main():
|
| default=None, metavar='LLVM_BIN_PATH',
|
| help='Path to LLVM executables ' +
|
| '(for building PEXE files)')
|
| + argparser.add_argument('--binutils-bin-path', required=False,
|
| + default=None, metavar='BINUTILS_BIN_PATH',
|
| + help='Path to Binutils executables')
|
| + argparser.add_argument('--assemble', required=False,
|
| + action='store_true',
|
| + help='Assemble the output')
|
| + argparser.add_argument('--disassemble', required=False,
|
| + action='store_true',
|
| + help='Disassemble the assembled output')
|
| argparser.add_argument('--echo-cmd', required=False,
|
| action='store_true',
|
| help='Trace command that generates ICE instructions')
|
| @@ -52,6 +62,7 @@ def main():
|
|
|
| args = argparser.parse_args()
|
| llvm_bin_path = args.llvm_bin_path
|
| + binutils_bin_path = args.binutils_bin_path
|
| llfile = args.input
|
|
|
| if args.llvm and args.llvm_source:
|
| @@ -85,10 +96,27 @@ def main():
|
| cmd += args.args
|
| if args.llvm_source:
|
| cmd += [llfile]
|
| + asm_temp = None
|
| + if args.assemble or args.disassemble:
|
| + # On windows we may need to close the file first before it can be
|
| + # re-opened by the other tools, so don't do delete-on-close,
|
| + # and instead manually delete.
|
| + asm_temp = tempfile.NamedTemporaryFile(delete=False)
|
| + asm_temp.close()
|
| + if args.assemble:
|
| + cmd += ['|', os.path.join(llvm_bin_path, 'llvm-mc'),
|
| + '-triple=i686-none-nacl',
|
| + '-filetype=obj', '-o', asm_temp.name]
|
| + if args.disassemble:
|
| + # Show wide instruction encodings, diassemble, and show relocs.
|
| + cmd += ['&&', os.path.join(binutils_bin_path, 'le32-nacl-objdump'),
|
| + '-w', '-d', '-r', '-Mintel', asm_temp.name]
|
|
|
| stdout_result = shellcmd(cmd, echo=args.echo_cmd)
|
| if not args.echo_cmd:
|
| sys.stdout.write(stdout_result)
|
| + if asm_temp:
|
| + os.remove(asm_temp.name)
|
|
|
| if __name__ == '__main__':
|
| main()
|
|
|