Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(105)

Side by Side Diff: pydir/crosstest_generator.py

Issue 1506653002: Subzero: Add Non-SFI support for x86-32. (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: Code review changes Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « pydir/crosstest.py ('k') | pydir/szbuild.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/env python2 1 #!/usr/bin/env python2
2 2
3 import argparse 3 import argparse
4 import ConfigParser 4 import ConfigParser
5 import os 5 import os
6 import shutil 6 import shutil
7 import sys 7 import sys
8 8
9 from utils import shellcmd 9 from utils import shellcmd
10 from utils import FindBaseNaCl 10 from utils import FindBaseNaCl
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
49 Builds and executes cross tests from the space of all possible attribute 49 Builds and executes cross tests from the space of all possible attribute
50 combinations. The space can be restricted by providing subsets of attributes 50 combinations. The space can be restricted by providing subsets of attributes
51 to specifically include or exclude. 51 to specifically include or exclude.
52 """ 52 """
53 # pypath is where to find other Subzero python scripts. 53 # pypath is where to find other Subzero python scripts.
54 pypath = os.path.abspath(os.path.dirname(sys.argv[0])) 54 pypath = os.path.abspath(os.path.dirname(sys.argv[0]))
55 root = FindBaseNaCl() 55 root = FindBaseNaCl()
56 56
57 # The rest of the attribute sets. 57 # The rest of the attribute sets.
58 targets = [ 'x8632', 'x8664', 'arm32' ] 58 targets = [ 'x8632', 'x8664', 'arm32' ]
59 sandboxing = [ 'native', 'sandbox' ] 59 sandboxing = [ 'native', 'sandbox', 'nonsfi' ]
60 opt_levels = [ 'Om1', 'O2' ] 60 opt_levels = [ 'Om1', 'O2' ]
61 arch_attrs = { 'x8632': [ 'sse2', 'sse4.1' ], 61 arch_attrs = { 'x8632': [ 'sse2', 'sse4.1' ],
62 'x8664': [ 'sse2', 'sse4.1' ], 62 'x8664': [ 'sse2', 'sse4.1' ],
63 'arm32': [ 'neon', 'hwdiv-arm' ] } 63 'arm32': [ 'neon', 'hwdiv-arm' ] }
64 flat_attrs = [] 64 flat_attrs = []
65 for v in arch_attrs.values(): 65 for v in arch_attrs.values():
66 flat_attrs += v 66 flat_attrs += v
67 arch_flags = { 'x8632': [], 67 arch_flags = { 'x8632': [],
68 'x8664': [], 68 'x8664': [],
69 # ARM doesn't have an ELF writer yet, and iasm does not 69 # ARM doesn't have an ELF writer yet, and iasm does not
(...skipping 26 matching lines...) Expand all
96 argparser.add_argument('--no-compile', '-n', default=False, 96 argparser.add_argument('--no-compile', '-n', default=False,
97 action='store_true', 97 action='store_true',
98 help="Don't build; reuse binaries from the last run") 98 help="Don't build; reuse binaries from the last run")
99 argparser.add_argument('--dir', dest='dir', metavar='DIRECTORY', 99 argparser.add_argument('--dir', dest='dir', metavar='DIRECTORY',
100 default=('{root}/toolchain_build/src/subzero/' + 100 default=('{root}/toolchain_build/src/subzero/' +
101 'crosstest/Output').format(root=root), 101 'crosstest/Output').format(root=root),
102 help='Output directory') 102 help='Output directory')
103 argparser.add_argument('--lit', default=False, action='store_true', 103 argparser.add_argument('--lit', default=False, action='store_true',
104 help='Generate files for lit testing') 104 help='Generate files for lit testing')
105 argparser.add_argument('--toolchain-root', dest='toolchain_root', 105 argparser.add_argument('--toolchain-root', dest='toolchain_root',
106 help='Path to toolchain binaries.') 106 default=(
107 '{root}/toolchain/linux_x86/pnacl_newlib_raw/bin'
108 ).format(root=root),
109 help='Path to toolchain binaries.')
107 args = argparser.parse_args() 110 args = argparser.parse_args()
108 111
109 # Run from the crosstest directory to make it easy to grab inputs. 112 # Run from the crosstest directory to make it easy to grab inputs.
110 crosstest_dir = '{root}/toolchain_build/src/subzero/crosstest'.format( 113 crosstest_dir = '{root}/toolchain_build/src/subzero/crosstest'.format(
111 root=root) 114 root=root)
112 os.chdir(crosstest_dir) 115 os.chdir(crosstest_dir)
113 116
114 tests = ConfigParser.RawConfigParser() 117 tests = ConfigParser.RawConfigParser()
115 tests.read('crosstest.cfg') 118 tests.read('crosstest.cfg')
116 119
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
149 attr=attr) 152 attr=attr)
150 extra = (tests.get(test, 'flags').split(' ') 153 extra = (tests.get(test, 'flags').split(' ')
151 if tests.has_option(test, 'flags') else []) 154 if tests.has_option(test, 'flags') else [])
152 # Generate the compile command. 155 # Generate the compile command.
153 cmp_cmd = ( 156 cmp_cmd = (
154 ['{path}/crosstest.py'.format(path=pypath), 157 ['{path}/crosstest.py'.format(path=pypath),
155 '-{opt}'.format(opt=opt), 158 '-{opt}'.format(opt=opt),
156 '--mattr={attr}'.format(attr=attr), 159 '--mattr={attr}'.format(attr=attr),
157 '--prefix=Subzero_', 160 '--prefix=Subzero_',
158 '--target={target}'.format(target=target), 161 '--target={target}'.format(target=target),
162 '--nonsfi={nsfi}'.format(nsfi='1' if sb=='nonsfi' else '0'),
159 '--sandbox={sb}'.format(sb='1' if sb=='sandbox' else '0'), 163 '--sandbox={sb}'.format(sb='1' if sb=='sandbox' else '0'),
160 '--dir={dir}'.format(dir=args.dir), 164 '--dir={dir}'.format(dir=args.dir),
161 '--output={exe}'.format(exe=exe), 165 '--output={exe}'.format(exe=exe),
162 '--driver={drv}'.format(drv=tests.get(test, 'driver'))] + 166 '--driver={drv}'.format(drv=tests.get(test, 'driver'))] +
163 extra + 167 extra +
164 ['--test=' + t 168 ['--test=' + t
165 for t in tests.get(test, 'test').split(' ')] + 169 for t in tests.get(test, 'test').split(' ')] +
166 arch_flags[target]) 170 arch_flags[target])
167 run_cmd_base = os.path.join(args.dir, exe) 171 run_cmd_base = os.path.join(args.dir, exe)
168 # Generate the run command. 172 # Generate the run command.
169 run_cmd = run_cmd_base 173 run_cmd = run_cmd_base
170 if sb == 'sandbox': 174 if sb == 'sandbox':
171 run_cmd = '{root}/run.py -q '.format(root=root) + run_cmd 175 run_cmd = '{root}/run.py -q '.format(root=root) + run_cmd
176 elif sb == 'nonsfi':
177 run_cmd = ('{root}/scons-out/opt-linux-x86-32/obj/src/nonsfi/' +
178 'loader/nonsfi_loader ').format(root=root) + run_cmd
172 else: 179 else:
173 run_cmd = RunNativePrefix(args.toolchain_root, target, run_cmd) 180 run_cmd = RunNativePrefix(args.toolchain_root, target, run_cmd)
174 if args.lit: 181 if args.lit:
175 # Create a file to drive the lit test. 182 # Create a file to drive the lit test.
176 with open(run_cmd_base + '.xtest', 'w') as f: 183 with open(run_cmd_base + '.xtest', 'w') as f:
177 f.write('# RUN: sh %s | FileCheck %s\n') 184 f.write('# RUN: sh %s | FileCheck %s\n')
178 f.write('cd ' + crosstest_dir + ' && \\\n') 185 f.write('cd ' + crosstest_dir + ' && \\\n')
179 f.write(' '.join(cmp_cmd) + ' && \\\n') 186 f.write(' '.join(cmp_cmd) + ' && \\\n')
180 f.write(run_cmd + '\n') 187 f.write(run_cmd + '\n')
181 f.write('echo Recreate a failure using ' + __file__ + 188 f.write('echo Recreate a failure using ' + __file__ +
182 ' --toolchain-root=' + args.toolchain_root + 189 ' --toolchain-root=' + args.toolchain_root +
183 ' --include=' + ','.join(desc) + '\n') 190 ' --include=' + ','.join(desc) + '\n')
184 f.write('# CHECK: Failures=0\n') 191 f.write('# CHECK: Failures=0\n')
185 else: 192 else:
186 if not args.no_compile: 193 if not args.no_compile:
187 shellcmd(cmp_cmd, 194 shellcmd(cmp_cmd,
188 echo=args.verbose) 195 echo=args.verbose)
189 if (args.defer): 196 if (args.defer):
190 deferred_cmds.append(run_cmd) 197 deferred_cmds.append(run_cmd)
191 else: 198 else:
192 shellcmd(run_cmd, echo=True) 199 shellcmd(run_cmd, echo=True)
193 for run_cmd in deferred_cmds: 200 for run_cmd in deferred_cmds:
194 shellcmd(run_cmd, echo=True) 201 shellcmd(run_cmd, echo=True)
195 202
196 if __name__ == '__main__': 203 if __name__ == '__main__':
197 main() 204 main()
OLDNEW
« no previous file with comments | « pydir/crosstest.py ('k') | pydir/szbuild.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698