| OLD | NEW |
| 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('env') | 6 Import('env') |
| 7 | 7 |
| 8 # force inclusion of entire library, so that we can validate it | 8 # force inclusion of entire library, so that we can validate it |
| 9 # NOTE: This approach does not work for -lc because of tons of | 9 # NOTE: This approach does not work for -lc because of tons of |
| 10 # undefined symbols which would have to be stubbed out | 10 # undefined symbols which would have to be stubbed out |
| (...skipping 23 matching lines...) Expand all Loading... |
| 34 EXTRA_LINKFLAGS=DEP_LINKFLAGS, | 34 EXTRA_LINKFLAGS=DEP_LINKFLAGS, |
| 35 LIBS=DEP_LIBS, | 35 LIBS=DEP_LIBS, |
| 36 _LIBFLAGS='') | 36 _LIBFLAGS='') |
| 37 node = env.CommandValidatorTestNacl('whole_archive_test.out', | 37 node = env.CommandValidatorTestNacl('whole_archive_test.out', |
| 38 image=nexe) | 38 image=nexe) |
| 39 env.AddNodeToTestSuite(node, | 39 env.AddNodeToTestSuite(node, |
| 40 ['toolchain_tests', 'small_tests'], | 40 ['toolchain_tests', 'small_tests'], |
| 41 'run_whole_archive_test') | 41 'run_whole_archive_test') |
| 42 | 42 |
| 43 | 43 |
| 44 TESTS_TO_RUN = [ | 44 # Test various intrinsics. |
| 45 # (src, exit_status, golden_file, cond), | 45 # Some of the intrinsic tests cover intrinsics that we do not want to |
| 46 # The valus None for golden_file means no golden file, c.f. | 46 # support. For example, llvm.frameaddress. If that is the case, we will |
| 47 # SConstruct::CommandTest() | 47 # use the nonstable_env as our test_env in AddIntrinsicTest. |
| 48 ('setlongjmp.c', '55', None, True), | 48 if env.Bit('bitcode'): |
| 49 ('intrinsics.cc', '55', None, True), | 49 nonstable_env = env.Clone() |
| 50 ('float2.c', '0', True, True), | 50 nonstable_env.Append(LINKFLAGS=['--pnacl-disable-abi-check']) |
| 51 ('frame_addresses.c', '0', None, True), | 51 else: |
| 52 # NOTE: this test uses bitcode asm's | 52 nonstable_env = env |
| 53 ('llvm_math_intrinsics.c', '0', True, env.Bit('bitcode')), | |
| 54 # NOTE: this test uses bitcode asm's | |
| 55 ('llvm_bitmanip_intrinsics.c', '0', True, env.Bit('bitcode')), | |
| 56 ('llvm_atomic_intrinsics.c', '55', None, True), | |
| 57 ] | |
| 58 | 53 |
| 59 for src, exit_status, golden_file, cond in TESTS_TO_RUN: | 54 |
| 60 if not cond: continue | 55 def AddIntrinsicTest(test_env, src, exit_status, has_golden_file=False): |
| 61 name = src.split('.')[0] | 56 name = src.split('.')[0] |
| 62 if golden_file == True: | 57 if has_golden_file: |
| 63 golden_file = env.File(name + '.stdout') | 58 golden_file = test_env.File(name + '.stdout') |
| 59 else: |
| 60 golden_file = None |
| 64 | 61 |
| 65 nexe = env.ComponentProgram(name, src, EXTRA_LIBS=['${NONIRT_LIBS}']) | 62 nexe = test_env.ComponentProgram(name, src, EXTRA_LIBS=['${NONIRT_LIBS}']) |
| 66 node = env.CommandSelLdrTestNacl(name + '.out', | 63 node = test_env.CommandSelLdrTestNacl(name + '.out', |
| 67 nexe, | 64 nexe, |
| 68 exit_status=exit_status, | 65 exit_status=exit_status, |
| 69 stdout_golden=golden_file) | 66 stdout_golden=golden_file) |
| 70 env.AddNodeToTestSuite(node, | 67 test_env.AddNodeToTestSuite(node, |
| 71 ['toolchain_tests','small_tests'], | 68 ['toolchain_tests','small_tests'], |
| 72 'run_' + name + '_test') | 69 'run_' + name + '_test') |
| 70 |
| 71 |
| 72 AddIntrinsicTest(env, 'setlongjmp.c', '55') |
| 73 AddIntrinsicTest(env, 'intrinsics.cc', '55'), |
| 74 AddIntrinsicTest(env, 'float2.c', '0', has_golden_file=True) |
| 75 # Consider llvm.frameaddress and llvm.returnaddress non-stable, |
| 76 # since we may want to hide return and stack addresses in the future. |
| 77 AddIntrinsicTest(nonstable_env, 'frame_addresses.c', '0'), |
| 78 AddIntrinsicTest(nonstable_env, 'return_address.c', '55') |
| 79 # TODO(jvoung): Revisit stability of llvm math, bitmanip, and atomic intrinsics. |
| 80 if env.Bit('bitcode'): |
| 81 # These two tests redirect C function calls to llvm instrinsic functions, |
| 82 # so they only work w/ PNaCl. |
| 83 AddIntrinsicTest(nonstable_env, 'llvm_math_intrinsics.c', '0', |
| 84 has_golden_file=True) |
| 85 AddIntrinsicTest(nonstable_env, 'llvm_bitmanip_intrinsics.c', '0', |
| 86 has_golden_file=True) |
| 87 AddIntrinsicTest(nonstable_env, 'llvm_atomic_intrinsics.c', '55') |
| 73 | 88 |
| 74 | 89 |
| 75 # initfini test | 90 # initfini test |
| 76 initfini_obj = env.ComponentObject('initfini.c') | 91 initfini_obj = env.ComponentObject('initfini.c') |
| 77 | 92 |
| 78 def AddInitFiniTest(env, name, extra_libs): | 93 def AddInitFiniTest(env, name, extra_libs): |
| 79 nexe = env.ComponentProgram(name, | 94 nexe = env.ComponentProgram(name, |
| 80 [initfini_obj], | 95 [initfini_obj], |
| 81 EXTRA_LIBS=extra_libs + ['${NONIRT_LIBS}']) | 96 EXTRA_LIBS=extra_libs + ['${NONIRT_LIBS}']) |
| 82 golden_file = env.File(name + '.stdout') | 97 golden_file = env.File(name + '.stdout') |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 133 bias_env.AddNodeToTestSuite(node, ['toolchain_tests', 'small_tests'], | 148 bias_env.AddNodeToTestSuite(node, ['toolchain_tests', 'small_tests'], |
| 134 'run_pthread_cleanup_test') | 149 'run_pthread_cleanup_test') |
| 135 | 150 |
| 136 | 151 |
| 137 # NOTE: the tests below break easily under valgrid and since | 152 # NOTE: the tests below break easily under valgrid and since |
| 138 # they do not exercise malloc/free we exclude | 153 # they do not exercise malloc/free we exclude |
| 139 if env.IsRunningUnderValgrind(): | 154 if env.IsRunningUnderValgrind(): |
| 140 Return() | 155 Return() |
| 141 | 156 |
| 142 | 157 |
| 143 nexe = env.ComponentProgram('return_address', 'return_address.c', | |
| 144 EXTRA_LIBS=['${NONIRT_LIBS}']) | |
| 145 node = env.CommandSelLdrTestNacl('return_address.out', | |
| 146 nexe, | |
| 147 exit_status='55') | |
| 148 env.AddNodeToTestSuite(node, | |
| 149 ['toolchain_tests', 'small_tests'], | |
| 150 'run_return_address_test') | |
| 151 | |
| 152 # NOTE: we assume that the incoming env contains '-O2', '-fomit-frame-pointer' | 158 # NOTE: we assume that the incoming env contains '-O2', '-fomit-frame-pointer' |
| 153 def MakeEnv(use_opts, use_frames): | 159 def MakeEnv(use_opts, use_frames): |
| 154 new_env = env.Clone() | 160 new_env = env.Clone() |
| 155 # AddBiasForPNaCl() is only needed for stack_frame.cc and eh_return.c. | 161 # AddBiasForPNaCl() is only needed for stack_frame.cc and eh_return.c. |
| 156 if new_env.Bit('bitcode'): | 162 if new_env.Bit('bitcode'): |
| 157 new_env.AddBiasForPNaCl() | 163 new_env.AddBiasForPNaCl() |
| 158 new_env.FilterOut(CFLAGS=['-pedantic']) | 164 new_env.FilterOut(CFLAGS=['-pedantic']) |
| 159 new_env.FilterOut(CCFLAGS=['-pedantic']) | 165 new_env.FilterOut(CCFLAGS=['-pedantic']) |
| 160 if use_frames: | 166 if use_frames: |
| 161 new_env.FilterOut(CFLAGS=['-fomit-frame-pointer']) | 167 new_env.FilterOut(CFLAGS=['-fomit-frame-pointer']) |
| (...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 355 env.AddNodeToTestSuite(node, | 361 env.AddNodeToTestSuite(node, |
| 356 ['toolchain_tests', 'small_tests'], | 362 ['toolchain_tests', 'small_tests'], |
| 357 'run_' + name + '_test') | 363 'run_' + name + '_test') |
| 358 AddAlignedCodeTest('aligned_code', | 364 AddAlignedCodeTest('aligned_code', |
| 359 env.ComponentProgram('aligned_code', ['aligned_code.c'], | 365 env.ComponentProgram('aligned_code', ['aligned_code.c'], |
| 360 EXTRA_LIBS=['${NONIRT_LIBS}'])) | 366 EXTRA_LIBS=['${NONIRT_LIBS}'])) |
| 361 if not env.Bit('nacl_disable_shared'): | 367 if not env.Bit('nacl_disable_shared'): |
| 362 AddAlignedCodeTest('aligned_code_lib', | 368 AddAlignedCodeTest('aligned_code_lib', |
| 363 env.NaClSharedLibrary('aligned_code_lib', | 369 env.NaClSharedLibrary('aligned_code_lib', |
| 364 ['aligned_code_lib.c'])) | 370 ['aligned_code_lib.c'])) |
| OLD | NEW |