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

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

Issue 10070010: validator_ragel: Link into TCB, use under env var (Closed) Base URL: svn://svn.chromium.org/native_client/trunk/src/native_client
Patch Set: . Created 8 years, 8 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) 2012 The Native Client Authors. All rights reserved. 2 # Copyright (c) 2012 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 import platform 6 import platform
7 import os 7 import os
8 8
9 Import('env') 9 Import('env')
10 10
(...skipping 271 matching lines...) Expand 10 before | Expand all | Expand 10 after
282 'advapi32', 282 'advapi32',
283 'winmm', 283 'winmm',
284 # TODO(gregoryd): ntdll.lib is required for sem_get_value implementation but 284 # TODO(gregoryd): ntdll.lib is required for sem_get_value implementation but
285 # it is available in Windows DDK only. The DDK is not 285 # it is available in Windows DDK only. The DDK is not
286 # in third_party, but we might need to add it if we want to use it. 286 # in third_party, but we might need to add it if we want to use it.
287 # 'ntdll', 287 # 'ntdll',
288 ], 288 ],
289 ) 289 )
290 290
291 if env.Bit('target_x86'): 291 if env.Bit('target_x86'):
292 VALIDATOR_LIB = env.NaClTargetArchSuffix('ncvalidate') 292 VALIDATOR_LIBS = [env.NaClTargetArchSuffix('ncvalidate'),
293 env.NaClTargetArchSuffix('dfa_validate_caller'),
294 env.NaClTargetArchSuffix('dfa_validate'),
295 ]
293 elif env.Bit('target_arm'): 296 elif env.Bit('target_arm'):
294 VALIDATOR_LIB = 'ncvalidate_arm_v2' 297 VALIDATOR_LIBS = ['ncvalidate_arm_v2']
295 else: 298 else:
296 # Unknown architecture 299 # Unknown architecture
297 raise AssertionError('Unknown architecture') 300 raise AssertionError('Unknown architecture')
298 301
299 r_debug_objs = [] 302 r_debug_objs = []
300 if env.Bit('linux'): 303 if env.Bit('linux'):
301 r_debug_objs += [env.ComponentObject('linux/r_debug.c')] 304 r_debug_objs += [env.ComponentObject('linux/r_debug.c')]
302 305
303 sel_ldr_libs = ['sel', 306 sel_ldr_libs = ['sel',
304 'env_cleanser', 307 'env_cleanser',
305 'nacl_error_code', 308 'nacl_error_code',
306 'manifest_proxy', 309 'manifest_proxy',
307 'simple_service', 310 'simple_service',
308 'thread_interface', 311 'thread_interface',
309 'gio_wrapped_desc', 312 'gio_wrapped_desc',
310 'nonnacl_srpc', 313 'nonnacl_srpc',
311 'nrd_xfer', 314 'nrd_xfer',
312 'nacl_perf_counter', 315 'nacl_perf_counter',
313 'nacl_base', 316 'nacl_base',
314 'imc', 317 'imc',
315 'container', 318 'container',
316 'nacl_fault_inject', 319 'nacl_fault_inject',
317 'platform', 320 'platform',
318 'platform_qual_lib', 321 'platform_qual_lib',
319 VALIDATOR_LIB, 322 ] + VALIDATOR_LIBS + DEBUG_LIBS
320 ] + DEBUG_LIBS
321 if ((not env.Bit('coverage_enabled') or not env.Bit('windows')) and 323 if ((not env.Bit('coverage_enabled') or not env.Bit('windows')) and
322 not env.CrossToolsBuild()): 324 not env.CrossToolsBuild()):
323 sel_main_objs = [env.ComponentObject('sel_main.c')] + r_debug_objs 325 sel_main_objs = [env.ComponentObject('sel_main.c')] + r_debug_objs
324 SEL_LDR_NODE = env.ComponentProgram('sel_ldr', sel_main_objs, 326 SEL_LDR_NODE = env.ComponentProgram('sel_ldr', sel_main_objs,
325 EXTRA_LIBS=sel_ldr_libs) 327 EXTRA_LIBS=sel_ldr_libs)
326 if env.Bit('mac'): 328 if env.Bit('mac'):
327 # This target exists only to check that the service_runtime code 329 # This target exists only to check that the service_runtime code
328 # can successfully be linked into a Mac OS X dynamic library. Our 330 # can successfully be linked into a Mac OS X dynamic library. Our
329 # assembly code needs to be PIC-friendly and linkable in this 331 # assembly code needs to be PIC-friendly and linkable in this
330 # context, because it is linked into a dynamic library inside 332 # context, because it is linked into a dynamic library inside
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
454 'simple_service', 456 'simple_service',
455 'thread_interface', 457 'thread_interface',
456 'gio_wrapped_desc', 458 'gio_wrapped_desc',
457 'nonnacl_srpc', 459 'nonnacl_srpc',
458 'nrd_xfer', 460 'nrd_xfer',
459 'nacl_perf_counter', 461 'nacl_perf_counter',
460 'nacl_base', 462 'nacl_base',
461 'imc', 463 'imc',
462 'nacl_fault_inject', 464 'nacl_fault_inject',
463 'platform', 465 'platform',
464 VALIDATOR_LIB, 466 ] + VALIDATOR_LIBS + DEBUG_LIBS)
465 ] + DEBUG_LIBS)
466 gtest_env.Requires(unit_tests_exe, crt) 467 gtest_env.Requires(unit_tests_exe, crt)
467 468
468 node = gtest_env.CommandTest( 469 node = gtest_env.CommandTest(
469 'gtest_output.xml.out', 470 'gtest_output.xml.out',
470 command=[unit_tests_exe, '--gtest_output=xml:${TARGET}']) 471 command=[unit_tests_exe, '--gtest_output=xml:${TARGET}'])
471 gtest_env.AddNodeToTestSuite(node, ['small_tests'], 472 gtest_env.AddNodeToTestSuite(node, ['small_tests'],
472 'run_service_runtime_tests') 473 'run_service_runtime_tests')
473 474
474 475
475 if not env.Bit('coverage_enabled') or not env.Bit('windows'): 476 if not env.Bit('coverage_enabled') or not env.Bit('windows'):
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
511 'simple_service', 512 'simple_service',
512 'thread_interface', 513 'thread_interface',
513 'gio_wrapped_desc', 514 'gio_wrapped_desc',
514 'nonnacl_srpc', 515 'nonnacl_srpc',
515 'nrd_xfer', 516 'nrd_xfer',
516 'nacl_perf_counter', 517 'nacl_perf_counter',
517 'nacl_base', 518 'nacl_base',
518 'imc', 519 'imc',
519 'nacl_fault_inject', 520 'nacl_fault_inject',
520 'platform', 521 'platform',
521 VALIDATOR_LIB, 522 ] + VALIDATOR_LIBS + DEBUG_LIBS)
522 ] + DEBUG_LIBS)
523 env.Requires(mmap_test_exe, crt) 523 env.Requires(mmap_test_exe, crt)
524 524
525 mmap_test_file = env.File(arch_testdata_dir + '/hello_world.nexe') 525 mmap_test_file = env.File(arch_testdata_dir + '/hello_world.nexe')
526 bootstrap, bootstrap_arg = env.GetBootstrap() 526 bootstrap, bootstrap_arg = env.GetBootstrap()
527 if bootstrap is None: 527 if bootstrap is None:
528 mmap_test_command = [mmap_test_exe, mmap_test_file] 528 mmap_test_command = [mmap_test_exe, mmap_test_file]
529 else: 529 else:
530 mmap_test_command = [bootstrap, mmap_test_exe, 530 mmap_test_command = [bootstrap, mmap_test_exe,
531 bootstrap_arg, mmap_test_file] 531 bootstrap_arg, mmap_test_file]
532 532
(...skipping 21 matching lines...) Expand all
554 'simple_service', 554 'simple_service',
555 'thread_interface', 555 'thread_interface',
556 'gio_wrapped_desc', 556 'gio_wrapped_desc',
557 'nonnacl_srpc', 557 'nonnacl_srpc',
558 'nrd_xfer', 558 'nrd_xfer',
559 'nacl_perf_counter', 559 'nacl_perf_counter',
560 'nacl_base', 560 'nacl_base',
561 'imc', 561 'imc',
562 'nacl_fault_inject', 562 'nacl_fault_inject',
563 'platform', 563 'platform',
564 VALIDATOR_LIB, 564 ] + VALIDATOR_LIBS + DEBUG_LIBS)
565 ] + DEBUG_LIBS)
566 env.Requires(nacl_sync_cond_test_exe, crt) 565 env.Requires(nacl_sync_cond_test_exe, crt)
567 node = env.CommandTest( 566 node = env.CommandTest(
568 'nacl_sync_cond_test.out', 567 'nacl_sync_cond_test.out',
569 command=[nacl_sync_cond_test_exe]) 568 command=[nacl_sync_cond_test_exe])
570 env.AddNodeToTestSuite(node, 569 env.AddNodeToTestSuite(node,
571 ['medium_tests'], 570 ['medium_tests'],
572 'run_nacl_sync_cond_test', 571 'run_nacl_sync_cond_test',
573 is_broken=is_broken) 572 is_broken=is_broken)
574 573
575 574
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after
748 if env.Bit('target_x86_64') and not env.CrossToolsBuild(): 747 if env.Bit('target_x86_64') and not env.CrossToolsBuild():
749 node = env.CommandSelLdrTestNacl( 748 node = env.CommandSelLdrTestNacl(
750 'hello_x32.out', 749 'hello_x32.out',
751 env.File(os.path.join(arch_testdata_dir, 'hello_x32.nexe')), 750 env.File(os.path.join(arch_testdata_dir, 'hello_x32.nexe')),
752 stdout_golden=env.File(os.path.join('${MAIN_DIR}', 751 stdout_golden=env.File(os.path.join('${MAIN_DIR}',
753 'tests/hello_world', 752 'tests/hello_world',
754 'hello_world.stdout')) 753 'hello_world.stdout'))
755 ) 754 )
756 env.AddNodeToTestSuite(node, ['small_tests'], 'run_hello_x32_test') 755 env.AddNodeToTestSuite(node, ['small_tests'], 'run_hello_x32_test')
757 756
757 # Test canned hello_world binary with validator_ragel.
758 # TODO(pasko): enable on x86-32 when the validator is updated to accept the
759 # binary.
760 if env.Bit('target_x86_64'):
761 node = env.CommandSelLdrTestNacl(
762 'dfa_hwd.out',
763 env.File(arch_testdata_dir + '/hello_world.nexe'),
764 stdout_golden = env.File('testdata/hello_world.stdout'),
765 stderr_golden = env.File('testdata/dfa_validator_hello.stderr'),
766 filter_regex = '"^(Hello, World!)$|DANGER"',
767 osenv='NACL_DANGEROUS_USE_DFA_VALIDATOR=1',
768 )
769 env.AddNodeToTestSuite(node, ['medium_tests'],
Nick Bray 2012/04/19 23:11:08 Also add to suite validator_tests ?
pasko-google - do not use 2012/04/20 14:30:38 Yeah, why not. Done.
770 'run_dfa_validator_hello_world_test')
771
758 # ---------------------------------------------------------- 772 # ----------------------------------------------------------
759 # Integration Tests 773 # Integration Tests
760 # ---------------------------------------------------------- 774 # ----------------------------------------------------------
761 775
762 # Doesn't work on windows under coverage. 776 # Doesn't work on windows under coverage.
763 # TODO(bradnelson): fix this to work on windows under coverage. 777 # TODO(bradnelson): fix this to work on windows under coverage.
764 # NOTE: uses validator 778 # NOTE: uses validator
765 if ((not env.Bit('windows') or not env.Bit('coverage_enabled')) and 779 if ((not env.Bit('windows') or not env.Bit('coverage_enabled')) and
766 not env.CrossToolsBuild()): 780 not env.CrossToolsBuild()):
767 obj_proxy_test_inputs = [ 'fs/obj_proxy_test.c', ] 781 obj_proxy_test_inputs = [ 'fs/obj_proxy_test.c', ]
768 obj_proxy_test = env.ComponentProgram( 782 obj_proxy_test = env.ComponentProgram(
769 'obj_proxy_test', 783 'obj_proxy_test',
770 obj_proxy_test_inputs, 784 obj_proxy_test_inputs,
771 EXTRA_LIBS=['sel', 785 EXTRA_LIBS=['sel',
772 'env_cleanser', 786 'env_cleanser',
773 'manifest_proxy', 787 'manifest_proxy',
774 'simple_service', 788 'simple_service',
775 'thread_interface', 789 'thread_interface',
776 'gio_wrapped_desc', 790 'gio_wrapped_desc',
777 'nonnacl_srpc', 791 'nonnacl_srpc',
778 'nrd_xfer', 792 'nrd_xfer',
779 'nacl_perf_counter', 793 'nacl_perf_counter',
780 'nacl_base', 794 'nacl_base',
781 'imc', 795 'imc',
782 'nacl_fault_inject', 796 'nacl_fault_inject',
783 'platform', 797 'platform',
784 'nacl_xdr', 798 'nacl_xdr',
785 'container', 799 'container',
786 VALIDATOR_LIB, 800 ] + VALIDATOR_LIBS + DEBUG_LIBS)
787 ] + DEBUG_LIBS)
788 801
789 node = env.CommandTest( 802 node = env.CommandTest(
790 'obj_proxy_test.out', 803 'obj_proxy_test.out',
791 # NOTE: this is run out of obj/ rather than staging/ 804 # NOTE: this is run out of obj/ rather than staging/
792 [obj_proxy_test, '-n', '2048'], 805 [obj_proxy_test, '-n', '2048'],
793 size='huge') 806 size='huge')
794 # TODO(bsy): change this test to use less time -- most of it (on windows) 807 # TODO(bsy): change this test to use less time -- most of it (on windows)
795 # is in the RNG, so with this will inherently speed up when the RNG is 808 # is in the RNG, so with this will inherently speed up when the RNG is
796 # updated. 809 # updated.
797 810
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
927 'simple_service', 940 'simple_service',
928 'thread_interface', 941 'thread_interface',
929 'gio_wrapped_desc', 942 'gio_wrapped_desc',
930 'nonnacl_srpc', 943 'nonnacl_srpc',
931 'nrd_xfer', 944 'nrd_xfer',
932 'nacl_perf_counter', 945 'nacl_perf_counter',
933 'nacl_base', 946 'nacl_base',
934 'imc', 947 'imc',
935 'nacl_fault_inject', 948 'nacl_fault_inject',
936 'platform', 949 'platform',
937 VALIDATOR_LIB, 950 ] + VALIDATOR_LIBS + DEBUG_LIBS)
938 ] + DEBUG_LIBS)
939 951
940 # NaClAbort() behaves differently when code coverage is enabled: it 952 # NaClAbort() behaves differently when code coverage is enabled: it
941 # calls exit() rather than abort(). 953 # calls exit() rather than abort().
942 if env.Bit('coverage_enabled'): 954 if env.Bit('coverage_enabled'):
943 expected_exit_status = 'naclabort_coverage' 955 expected_exit_status = 'naclabort_coverage'
944 else: 956 else:
945 expected_exit_status = 'sigabrt' 957 expected_exit_status = 'sigabrt'
946 node = env.CommandTest( 958 node = env.CommandTest(
947 'sel_ldr_thread_death_test.out', 959 'sel_ldr_thread_death_test.out',
948 command=[sel_ldr_thread_death_test_exe], 960 command=[sel_ldr_thread_death_test_exe],
949 exit_status=expected_exit_status) 961 exit_status=expected_exit_status)
950 962
951 # TODO(tuduce): Make it work on windows. 963 # TODO(tuduce): Make it work on windows.
952 env.AddNodeToTestSuite(node, ['medium_tests'], 964 env.AddNodeToTestSuite(node, ['medium_tests'],
953 'run_sel_ldr_thread_death_test', 965 'run_sel_ldr_thread_death_test',
954 is_broken=env.Bit('windows')) 966 is_broken=env.Bit('windows'))
955 967
956 968
957 # This currently tests linking of sel_main_chrome.c *only*. We do not 969 # This currently tests linking of sel_main_chrome.c *only*. We do not
958 # expect this program to do anything meaningful when run. 970 # expect this program to do anything meaningful when run.
959 env.ComponentProgram('sel_main_chrome_test', ['sel_main_chrome_test.c'], 971 env.ComponentProgram('sel_main_chrome_test', ['sel_main_chrome_test.c'],
960 EXTRA_LIBS=sel_ldr_libs) 972 EXTRA_LIBS=sel_ldr_libs)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698