OLD | NEW |
1 #!/usr/bin/env python2 | 1 #!/usr/bin/env python2 |
2 | 2 |
3 import argparse | 3 import argparse |
4 import itertools | 4 import itertools |
5 import os | 5 import os |
6 import re | 6 import re |
7 import subprocess | 7 import subprocess |
8 import sys | 8 import sys |
9 import tempfile | 9 import tempfile |
10 | 10 |
11 from utils import FindBaseNaCl, shellcmd | 11 from utils import FindBaseNaCl, shellcmd |
12 | 12 |
13 | 13 |
14 def TargetAssemblerFlags(target, sandboxed): | 14 def TargetAssemblerFlags(target, sandboxed): |
15 # TODO(reed kotler). Need to find out exactly we need to | 15 # TODO(reed kotler). Need to find out exactly we need to |
16 # add here for Mips32. | 16 # add here for Mips32. |
17 flags = { 'x8632': ['-triple=%s' % ('i686-nacl' if sandboxed else 'i686')], | 17 flags = { 'x8632': ['-triple=%s' % ('i686-nacl' if sandboxed else 'i686')], |
| 18 'x8664': ['-triple=%s' % ( |
| 19 'x86_64-nacl' if sandboxed else 'x86_64')], |
18 'arm32': ['-triple=%s' % ( | 20 'arm32': ['-triple=%s' % ( |
19 'armv7a-nacl' if sandboxed else 'armv7a'), | 21 'armv7a-nacl' if sandboxed else 'armv7a'), |
20 '-mcpu=cortex-a9', '-mattr=+neon'], | 22 '-mcpu=cortex-a9', '-mattr=+neon'], |
21 'mips32': ['-triple=mipsel' ] } | 23 'mips32': ['-triple=mipsel' ] } |
22 return flags[target] | 24 return flags[target] |
23 | 25 |
24 | 26 |
25 def TargetDisassemblerFlags(target): | 27 def TargetDisassemblerFlags(target): |
26 flags = { 'x8632': ['-Mintel'], | 28 flags = { 'x8632': ['-Mintel'], |
| 29 'x8664': ['-Mintel'], |
27 'arm32': [], | 30 'arm32': [], |
28 'mips32':[] } | 31 'mips32':[] } |
29 return flags[target] | 32 return flags[target] |
30 | 33 |
31 | 34 |
32 def main(): | 35 def main(): |
33 """Run the pnacl-sz compiler on an llvm file. | 36 """Run the pnacl-sz compiler on an llvm file. |
34 | 37 |
35 Takes an llvm input file, freezes it into a pexe file, converts | 38 Takes an llvm input file, freezes it into a pexe file, converts |
36 it to a Subzero program, and finally compiles it. | 39 it to a Subzero program, and finally compiles it. |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
72 argparser.add_argument('--disassemble', required=False, | 75 argparser.add_argument('--disassemble', required=False, |
73 action='store_true', | 76 action='store_true', |
74 help='Disassemble the assembled output') | 77 help='Disassemble the assembled output') |
75 argparser.add_argument('--dis-flags', required=False, | 78 argparser.add_argument('--dis-flags', required=False, |
76 action='append', default=[], | 79 action='append', default=[], |
77 help='Add a disassembler flag') | 80 help='Add a disassembler flag') |
78 argparser.add_argument('--filetype', default='iasm', dest='filetype', | 81 argparser.add_argument('--filetype', default='iasm', dest='filetype', |
79 choices=['obj', 'asm', 'iasm'], | 82 choices=['obj', 'asm', 'iasm'], |
80 help='Output file type. Default %(default)s.') | 83 help='Output file type. Default %(default)s.') |
81 argparser.add_argument('--target', default='x8632', dest='target', | 84 argparser.add_argument('--target', default='x8632', dest='target', |
82 choices=['x8632','arm32','mips32'], | 85 choices=['x8632','x8664','arm32','mips32'], |
83 help='Target architecture. Default %(default)s.') | 86 help='Target architecture. Default %(default)s.') |
84 argparser.add_argument('--echo-cmd', required=False, | 87 argparser.add_argument('--echo-cmd', required=False, |
85 action='store_true', | 88 action='store_true', |
86 help='Trace command that generates ICE instructions') | 89 help='Trace command that generates ICE instructions') |
87 argparser.add_argument('--tbc', required=False, action='store_true', | 90 argparser.add_argument('--tbc', required=False, action='store_true', |
88 help='Input is textual bitcode (not .ll)') | 91 help='Input is textual bitcode (not .ll)') |
89 argparser.add_argument('--expect-fail', required=False, action='store_true', | 92 argparser.add_argument('--expect-fail', required=False, action='store_true', |
90 help='Negate success of run by using LLVM not') | 93 help='Negate success of run by using LLVM not') |
91 argparser.add_argument('--args', '-a', nargs=argparse.REMAINDER, | 94 argparser.add_argument('--args', '-a', nargs=argparse.REMAINDER, |
92 default=[], | 95 default=[], |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
165 [asm_temp.name]) | 168 [asm_temp.name]) |
166 | 169 |
167 stdout_result = shellcmd(cmd, echo=args.echo_cmd) | 170 stdout_result = shellcmd(cmd, echo=args.echo_cmd) |
168 if not args.echo_cmd: | 171 if not args.echo_cmd: |
169 sys.stdout.write(stdout_result) | 172 sys.stdout.write(stdout_result) |
170 if asm_temp: | 173 if asm_temp: |
171 os.remove(asm_temp.name) | 174 os.remove(asm_temp.name) |
172 | 175 |
173 if __name__ == '__main__': | 176 if __name__ == '__main__': |
174 main() | 177 main() |
OLD | NEW |