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

Side by Side Diff: src/trusted/validator_x86/build.scons

Issue 636933004: stop building/testing old x86 validator. (Closed) Base URL: svn://svn.chromium.org/native_client/trunk/src/native_client
Patch Set: rebase master Created 6 years, 2 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 | Annotate | Revision Log
OLDNEW
1 # -*- python -*- 1 # -*- python -*-
2 # Copyright (c) 2011 The Native Client Authors. All rights reserved. 2 # Copyright (c) 2011 The Native Client Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 5
6 6
7 import glob 7 import glob
8 import os 8 import os
9 import sys 9 import sys
10 10
11 Import('env') 11 Import('env')
12 12
13 # 13 #
14 # 14 #
15 # Build x86 only pieces 15 # Build x86 only pieces
16 # 16 #
17 # 17 #
18 if not env.Bit('target_x86'): Return() 18 if not env.Bit('target_x86'): Return()
19 19
20 # ------------------------------------------------------
21 # General adjustments to the environment for builds.
22
23 # Defines which test sets tests should be added to.
24 STANDARD_TESTS = ['small_tests', 'validator_tests']
25
26 # TODO(bradchen): eliminate need for the following line
27 env.FilterOut(CCFLAGS=['-Wextra', '-Wswitch-enum', '-Wsign-compare'])
28
29 # Defines the source directory where validator generated files should be added.
30 val_src_dir = '$MAIN_DIR/src/trusted/validator_x86'
31
32 # Create environment for command-line tools and testing, rather than
33 # part of the TCB. Then define compile-time flag that communicates
34 # that we are compiling in the test environment (rather than for the TCB).
35 test_env = env.Clone()
36 test_env.Append(CCFLAGS=['-DNACL_TRUSTED_BUT_NOT_TCB'])
37
38 # TODO(shcherbina): remove dead test running code (tests moved to
39 # testscripts/run_tests.py and *.test files)
40
41 # ======================================================================
42 # Helper functions for getting automated tests from the corresponding
43 # test directory.
44
45 TESTDATA_DIR = 'testdata/'
46 TESTDATA_SUBARCH_DIR = TESTDATA_DIR + env['TARGET_SUBARCH'] + '/'
47
48 # Generates the set of test files with the given extension.
49 def __GoldenFiles(ext):
50 return Glob(TESTDATA_SUBARCH_DIR + '*.' + ext)
51
52 # Generates base names (i.e. minus path and extention (ext) suffix) of
53 # all test data input files.
54 def __FilterOutTestFileBaseGen(files, ext):
55 for f in files:
56 yield os.path.basename(f.path).replace('.' + ext, '')
57
58 # Generates the set of golden bases for the given extension.
59 def __GoldenBases(ext):
60 return __FilterOutTestFileBaseGen(__GoldenFiles(ext), ext)
61
62 # Generates the corresponding test file from the given base.
63 def __BaseTestFile(base, ext):
64 return test_env.File(TESTDATA_SUBARCH_DIR + base + '.' + ext)
65
66 # Generates the corresponding output file from the given base.
67 def __OutTestFile(test, base, ext):
68 return test + '_' + base + '.' + ext + '.out'
69
70 def __AddTest(test, test_env, base, ext, command, groups):
71 test_env.AddNodeToTestSuite(
72 command,
73 groups,
74 'run_%s_%s_%s_test' % (test, base, ext))
75
76
77 # The following are common library components that use elements
78 # of both x86-32 and x86-64 validators.
79 test_env.ComponentLibrary(test_env.NaClTargetArchSuffix('ncdis_util'),
80 ['ncdis_segments.c',
81 'nc_read_segment.c',
82 test_env.NaClTargetArchSuffix('ncenuminsts') + '.c'])
83
84 # The following are copycode routines for x86-32 and x86-64. 20 # The following are copycode routines for x86-32 and x86-64.
85 # TODO(karl): Break this up so that we don't need to load 21 # TODO(karl): Break this up so that we don't need to load
86 # non-shared code in library. 22 # non-shared code in library.
87 env.ComponentLibrary(env.NaClTargetArchSuffix('nccopy'), [ 23 env.ComponentLibrary(env.NaClTargetArchSuffix('nccopy'), [
88 'nccopycode.c', 24 'nccopycode.c',
89 'nccopycode_stores.S', 25 'nccopycode_stores.S',
90 ]) 26 ])
91 27
92 # ======================================================================
93 # Decoder unittests
94 if test_env.Bit('target_x86_32'):
95 # TODO(kschimpf): remove this when the validator builds as 64-bits.
96 if test_env.Bit('build_x86_32'):
97 ncdecode_tests = test_env.ComponentProgram(
98 'ncdecode_tests',
99 ['ncdecode_tests.c'],
100 EXTRA_LIBS=[test_env.NaClTargetArchSuffix('ncdis_seg_sfi_verbose'),
101 ])
102
103 node = test_env.CommandTest(
104 'ncdecode_tests.out',
105 [ncdecode_tests],
106 )
107
108 test_env.AddNodeToTestSuite(node, STANDARD_TESTS, 'run_nc_decode_tests')
109
110 # ======================================================================
111 # Build command line decoder.
112 #
113 ncdis = test_env.ComponentProgram(
114 'ncdis', [
115 'ncdis.c',
116 ],
117 EXTRA_LIBS=[test_env.NaClTargetArchSuffix('ncdis_util'),
118 test_env.NaClTargetArchSuffix('ncfileutils'),
119 test_env.NaClTargetArchSuffix('ncdis_decode_tables'),
120 test_env.NaClTargetArchSuffix('nc_opcode_modeling_verbose'),
121 'utils',
122 ])
123
124 # ======================================================================
125 # Valiator unittests
126 if test_env.Bit('target_x86_32'):
127 ncval_tests = test_env.ComponentProgram(
128 'ncval_tests',
129 ['ncval_tests.c'],
130 EXTRA_LIBS=[test_env.NaClTargetArchSuffix('ncdis_util'),
131 test_env.NaClTargetArchSuffix('ncval_seg_sfi'),
132 ])
133
134 node = test_env.CommandTest(
135 'ncval_tests.out',
136 [ncval_tests],
137 )
138
139 test_env.AddNodeToTestSuite(node, STANDARD_TESTS, 'run_ncval_tests')
140
141 # ======================================================================
142 # Define what decoder was historically being used for tests. This allows
143 # existing tests to continue to follow that historical assumption.
144
145 if test_env.Bit('target_x86_32'):
146 _ncdis_historical_decoder = '--validator_decoder'
147 else:
148 _ncdis_historical_decoder = '--full_decoder'
149
150
151 # ======================================================================
152 # Decoder vs objdump tests
153 # TODO: add tests using the toolchain binaries in the sdk
154 if test_env.Bit('linux') and test_env.Bit('target_x86_32'):
155 test = 'discmp'
156 ext = 'nexe'
157 for base in __GoldenBases(ext):
158 node = test_env.CommandTest(
159 __OutTestFile(test, base, ext),
160 ["${PYTHON}", test_env.File('discmp.py'), test_env.File('ncdis'),
161 __BaseTestFile(base, ext)],
162 size='large')
163 __AddTest(test, test_env, base, ext, node, ['large_tests'])
164
165 # ======================================================================
166 # Run tests on ncdis, where the input is self documenting (i.e. the input
167 # file matches the generated resulit.
168 def __AddNcdisSelfDocTests(validator_decoder, internals_also):
169 test = 'ncdis_test'
170 options = ['--commands=-']
171 input_ext = 'input'
172 if internals_also:
173 output_ext = 'internal'
174 options.append('--internal')
175 else:
176 output_ext = input_ext
177 options.append('--self_document')
178 if validator_decoder:
179 output_ext = 'v' + output_ext
180 options.append('--validator_decoder')
181 else:
182 options.append('--full_decoder')
183 for base in __GoldenBases(output_ext):
184 command = [ncdis] + options
185 ncdis_test = test_env.CommandTest(
186 __OutTestFile(test, base, output_ext),
187 command,
188 stdin = __BaseTestFile(base, input_ext),
189 stdout_golden = __BaseTestFile(base, output_ext))
190 __AddTest(test, test_env, base, output_ext, ncdis_test,
191 STANDARD_TESTS)
192
193 for validator_decoder in [False, True]:
194 for internals_also in [False, True]:
195 __AddNcdisSelfDocTests(validator_decoder, internals_also)
196
197 # ======================================================================
198 # Build command line validator.
199 ncval = test_env.ComponentProgram(
200 'ncval', [
201 'ncval.c',
202 ],
203 EXTRA_LIBS=[test_env.NaClTargetArchSuffix('ncdis_util'),
204 test_env.NaClTargetArchSuffix('ncval_seg_sfi'),
205 test_env.NaClTargetArchSuffix('ncfileutils'),
206 test_env.NaClTargetArchSuffix('ncdis_decode_tables'),
207 'utils',
208 ])
209
210 test_env.SDKInstallBin('ncval', ncval)
211
212
213 # ======================================================================
214 # Validator tests against real nacl images
215 # TODO: add death tests
216 # TODO: add tests using binaries produced by nacl.scons files
217 # TODO: consider comparing the actual output (not just exit codes)
218 # Validate tests
219 if env.Bit('target_x86_32'):
220 test = 'validate'
221 ext = 'nexe'
222 for base in __GoldenBases(ext):
223 node = test_env.CommandTest(
224 __OutTestFile(test, base, ext),
225 [ncval, '-t', __BaseTestFile(base, ext)])
226 __AddTest(test, test_env, base, ext, node, ['small_tests'])
227
228 if test_env.Bit('target_x86_64'):
229 node = test_env.CommandTest('ncval_hello_x32.out',
230 [ncval,
231 env.File(os.path.join('${MAIN_DIR}/src/trusted',
232 'service_runtime',
233 'testdata/x86_64',
234 'hello_x32.nexe'))])
235 env.AddNodeToTestSuite(node, STANDARD_TESTS, 'run_ncval_hello_x32_test')
236
237 bits = env.get('TARGET_SUBARCH')
238 assert bits in ['32', '64']
239
240 tests_mask = '${MAIN_DIR}/src/trusted/validator_x86/testdata/%s/*.test' % bits
241
242 if env.Bit('regenerate_golden'):
243 update_option = ['--update']
244 else:
245 update_option = []
246
247 old_testdata_tests = env.AutoDepsCommand(
248 'x86_old_validator_testdata_tests.out',
249 ['${PYTHON}',
250 env.File('testscripts/run_old_validator_tests.py'),
251 '--ncval', ncval,
252 '--ncdis', ncdis,
253 '--bits', bits,
254 tests_mask] + update_option)
255
256 env.AddNodeToTestSuite(
257 old_testdata_tests,
258 STANDARD_TESTS,
259 node_name='run_x86_old_validator_testdata_tests')
260
261 rdfaval = '$STAGING_DIR/ncval_new$PROGSUFFIX'
262
263 rdfa_testdata_tests = env.AutoDepsCommand(
264 'x86_rdfa_validator_testdata_tests.out',
265 ['${PYTHON}',
266 env.File('testscripts/run_rdfa_validator_tests.py'),
267 '--rdfaval', env.File(rdfaval),
268 '--bits', bits,
269 tests_mask] + update_option)
270
271 env.AddNodeToTestSuite(
272 rdfa_testdata_tests,
273 STANDARD_TESTS,
274 node_name='run_x86_rdfa_validator_testdata_tests')
275
276 compare_validators = env.AutoDepsCommand(
277 'compare_x86_validators_tests.out',
278 ['${PYTHON}',
279 env.File('testscripts/compare_validators.py'),
280 '--bits', bits,
281 tests_mask] + update_option)
282
283 env.AddNodeToTestSuite(
284 compare_validators,
285 STANDARD_TESTS,
286 node_name='run_compare_x86_validators_tests')
287
288 if env.Bit('regenerate_golden'):
289 # Don't want these tests run in parallel because they write
290 # to .test files.
291 SideEffect(tests_mask, [old_testdata_tests, rdfa_testdata_tests])
292 Depends(compare_validators, [old_testdata_tests, rdfa_testdata_tests])
OLDNEW
« no previous file with comments | « src/trusted/validator_ragel/verify_regular_instructions_old.py ('k') | src/trusted/validator_x86/ncval.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698